移动Web学习笔记-空间转换、动画

143 阅读3分钟

1.空间转换

transform属性

实现元素在空间内的位移、旋转、缩放等

空间:坐标轴定义,x、y和z三条坐标轴构成一个立体空间

Z轴位置与视线方向相同

空间转换也叫3D转换

属性:transform
在这里插入图片描述

语法: transform:translate3d(x,y,z)

transform:translateX(值)

transform:translateY(值)

transform:translateZ(值)

取值(正负均可): 像素单位数值 百分比

perspective属性(添加给父级),透视效果

perspective:值;

  1. 透视距离也称为视距,所谓的视距就是人的眼睛到屏幕的距离
  2. perspective只是增加了近大远小的效果,并不是真正开启3d

rotate属性:实现元素空间旋转效果

语法:

transform:rotateZ(值)

transform:rotateX(值)

transform:rotateY(值)

空间旋转

rotate3d(x,y,z ,角度度数):用来设置自定义旋转轴的位置和旋转角度 x,y,z 取值为0~1之间的数字

立体呈现

目标: 使用transform-style: preserve-3d呈现立体图形

思考:使用perspective透视属性能否呈现立体图形?

答:不能,perspective只增加近大远小、近实远虚的视觉效果。

实现方法

添加 transform-style: preserve-3d;

使子元素处于真正的3d空间

image.png

空间缩放

语法

-   transform:scaleX(倍数);
-   transform:scaleY(倍数);
-   transform:scaleZ(倍数);
-   transform:scale3d(x,y,z);

2.动画

动画注意点:

   1.动画的名称不能为running,否则动画不生效;
   2.多个动画之间动画的名称不能重复;
   3.一次动画完成之后,默认会突然一下回到最初的状态

animation

过渡——实现2个状态间的变化过程

动画效果:实现多个状态间的变化过程,动画过程可控

(重复播放、最终画面、是否暂停) 动画实现步骤分3步 动画实现步骤——1.定义动画

image.png 动画实现步骤——2.使用动画

image.png 动画实现步骤——3. animation:紧跟着动画名称+动画时长\

动画属性

image.png

image.png

调用动画

       延迟时间:动画开始执行之前要等待的时间 s/ms
       动画播放次数:infinite 无限次播放
       动画播放方向:alternate 交替播放
       速度曲线:默认 ease; 1. linear 匀速播放,一般用在补间动画(连续的动画播放)  
       steps(次数)一般配合精灵图使用,用在逐帧动画,一步一步的去完成的动画;
       执行完毕时的状态:forwards 动画会停在动画结束时的状态;
       注意点:
        动画名称和播放一次动画的时长必须写,其他属性需要就写
        forwards不能和infinite结合使用,否则不生效
        animation 里面属性值 不分先后顺序
        当属性值里有两个时间,第一个时间永远表示动画时长,第二个表示等待时间/延迟时间
使用steps实现逐帧动画

image.png

逐帧动画:帧动画。开发中,一般配合精灵图实现动画效果。

语法: animation-timing-function: steps(N);

将动画过程等分成N份

image.png

.box {
        width: 140px;
        height: 140px;
        /* ps */
        background: skyblue url(./images/bg.png);

        /* 调用动画 */
        animation: translate 3s forwards, move 1s steps(12) infinite;
      }

      /* 2个动画 */
      /* 1.让盒子往右边平移 */
      @keyframes translate {
        to {
          transform: translateX(600px);
        }
      }

      /* 2.让人物在盒子里面跑起来 */
      @keyframes move {
        to {
          /* 改变背景图片位置 */
          background-position: -1680px 0;
        }
      }