Apache Cordova移动应用开发实战
上QQ阅读APP看书,第一时间看更新

2.3 更好玩的CSS 3

CSS是层叠样式表(Cascading Style Sheet)的缩写,在网页中使用HTML可以对页面元素的颜色、字体、背景和其他效果进行有效且精确地控制。

CSS 3是在HTML 5标准中根据需要针对过去CSS进行的修改和补充,主要包括以下内容。

● 盒子模型的样式:主要包括了圆角、阴影、透明以及背景渐变等新的效果。

● 选择器:为CSS 3提供了比旧版本的CSS更加灵活的选择器模型。

● 文字特效:使CSS 3支持颜色渐变、阴影文字多列显示等效果。

● 2D/3D转换:为CSS动画奠定基础,使页面元素支持更广泛的几何变换。

● 动画:为CSS加入了新的动画特性,使HTML 5代替Flash成为可能。

通过使用CSS 3能够完成许多在原有CSS框架下看似不可能的任务,比如说可以用6个div元素与CSS 3混用来实现正方体的效果。

首先在HTML中建立6个元素,为了使它们便于定位,要使用两层div对它们进行嵌套。分别用1~6的阿拉伯数字来标注正方体的6个面:

    <section class="container">
        <div id="cube">
          <figure class="front">1</figure>
          <figure class="back">2</figure>
          <figure class="right">3</figure>
          <figure class="left">4</figure>
          <figure class="top">5</figure>
          <figure class="bottom">6</figure>
      </div>
    </section>

接下来利用CSS定义各个层次的关系、尺寸,为进行3D变换做准备。

    .container {
      width: 200px;
      height: 200px;
      position: relative;
      <span style="color:#ff0000; ">perspective: 1000px; </span>
    }
    #cube {
      width: 100%;
      height: 100%;
      position: absolute;
     <span style="color:#ff0000; "> transform-style: preserve-3d; </span>
    }
    #cube figure {
      width: 196px;
      height: 196px;
      display: block;
      position: absolute;
      border: 2px solid black;
    }

接下来要为正方体的6个面做3D变换,由于每个面的面积大小都是完全一样的,不同的只是所处的坐标和角度,因此在此部分只需要利用translation属性进行变换,比如说font需要旋转180°,然后向页面内部平移100px:

    #cube .front  { transform: rotateY(    0deg ) translateZ( 100px ); }
    #cube .back    { transform: rotateX( 180deg ) translateZ( 100px ); }
    #cube .right  { transform: rotateY(  90deg ) translateZ( 100px ); }
    #cube .left    { transform: rotateY( -90deg ) translateZ( 100px ); }
    #cube .top     { transform: rotateX(  90deg ) translateZ( 100px ); }
    #cube .bottom { transform: rotateX( -90deg ) translateZ( 100px ); }
    #cube.show-front  { transform: translateZ( -100px ) rotateY(     0deg ); }
    #cube.show-back    { transform: translateZ( -100px ) rotateX( -180deg ); }
    #cube.show-right  { transform: translateZ( -100px ) rotateY(  -90deg ); }
    #cube.show-left    { transform: translateZ( -100px ) rotateY(    90deg ); }
    #cube.show-top     { transform: translateZ( -100px ) rotateX(  -90deg ); }
    #cube.show-bottom { transform: translateZ( -100px ) rotateX(    90deg ); }

最后为正方体加入动画效果使正方体不断滚动:

    #cube { transition: transform 1s; }

最终实现的效果如图2-30所示。

图2-30 利用CSS 3所实现的正方体效果

总结:CSS 3能够完成一些在旧版本CSS中无法完成的任务,它在未来的开发中会起到举足轻重的作用。

提示

在实际开发中,可以利用本例来实现游戏中摇骰子的效果,以增强用户的娱乐性。另外在日常的应用中,动画也是增强交互必不可少的要素,比如360手机助手中就为“加速”功能加入了一个火箭升空的动画。虽然这些动画效果用JavaScript也可以实现,但是效率远不如CSS 3。另外,网页游戏界也有一条规则是:“能用CSS 3动画就别用JavaScript”。由此不难看出CSS 3的重要。