移动Web-空间转换,动画

144 阅读4分钟

移动Web-02****

移动Web -04空间转换****

一.3D坐标系(左手原则)

X 轴 往右越大,是正值, 否则反之

Y 轴 往下越大,是正值,否则反之

Z轴 (指向我们)越大,是正值,否则反之

二.3D位移

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

      transform: translateX(值);

     transform: translateY(值);

     transform: translateZ(值);

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

/* 3d位移  单独写法 */

        /* x轴:右正 左负 */

        /* transform: translateX(100px); */

        /* transform: translateX(-100px); */

        /* Y轴:上负 下正 */

        /* transform: translateY(100px); */

        /* transform: translateY(-100px); */

     /* Z轴:面向于自己的方向为正值 面向于自己的反方向负值 */

     /* transform: translateZ(100px); */

     /* transform: translateZ(-500px); */

     /* 3d位移  综合写法 */

     /* 语法:transform: translate3d(x轴, y轴, z轴); */

      transform: translate3d(100px, 200px, -400px);

三. 透视

/* 透视 推荐值:800-1200px */

        /* 透视:一般推荐给父元素添加 */

        /* 透视的作用:进大远小,近实远虚的效果,查看z轴需要添加透视 */

/* 透视的值越小,眼睛到屏幕的距离就越小,你看到的物体就变大 */

/* 透视的值越大,眼睛到屏幕的距离就越大,你看到的物体就变小 */

/* 注意:透视和3d没有关系 */

            perspective: 800px;

 

三-1.透视的BUG

   /* 透视 */

     /* 问题:透视默认中心点在屏幕中间,如果内容不在盒子中间则会出现倾斜现象 */

     /* 解决方法:把内容放在屏幕中间 */

         text-align: center;

四.3D旋转

transform: rotateZ(值);

transform: rotateX(值);

transform: rotateY(值);

   /* 3D x轴 rotate 单位 deg度 turn圈 */

        /* x轴正值从上往下旋转 负值从下往上 */

        /* transform: rotateX(-180turn) scale(1.8); */

         /* y轴正值从左往右旋转 负值从右往左 */

         /* transform: rotateY(-180deg); */

         /* z轴正值顺时针旋转 负值逆时针旋转 */

         /* transform: rotateZ(-180deg); */

         /* 3D旋转子综合写法了解:transform: rotate3d(x,y,z,角度); */

         /* x,y,z只能取0和1  0表示不围绕这个坐标旋转 1表示围绕这个坐标旋转 */

            transform: rotate3d(0,1,1,60deg);

注意:默认的旋转中心在盒子的中心位置。

五.立体呈现

/* 开启3D */

            transform-style: preserve-3d;

盒子父元素添加transform-style: preserve-3d; 

六. 空间缩放

语法: transform: scaleX(倍数);

  `transform: scaleY(倍数);`

  `transform: scaleZ(倍数);`

  `transform: scale3d(x, y, z);`

 /* 3d缩放 单属性值写法 取值1以下缩小 1以上放大 1表示不变 也可以设置负值 */

        /* scaleX 可以理解为盒子的宽 */

        /* transform: scaleX(2); */

        /* scaleY 可以理解为盒子的高 */

        /* transform: scaleY(3); */

        /* scaleZ 可以理解为面向自己的方向进行放大,需要把盒子进行旋转 */

        /* transform: scaleZ(3) rotateX(90deg); */

        /* 缩放的综合写法:transform: scale3d(x, y, z); 值为倍数 */

           transform: scale3d(2, 2, 2);

移动Web -05动画****

一. 补间动画

1. 定义动画

/* 1.定义动画 */

        @keyframes move(动画名称) {

            /* 开始状态from 如果原点取值为0可以省略*/

            form {

                transform: translate(0, 0);

            }

            /* 结束状态to */

            to {

                transform: translate(800px, 0);

            }

        }

或者

        @keyframes move(动画名称) {

            0% {

                transform: translate(0, 0);

            }

            50% {

                transform: translate(600px, 600px);

            }

            100% {

                transform: translate(0, 0);

            }

        }

2. 调用动画

     /* 2.调用动画 animation:动画名 动画执行时间*/

animation: move 2s;

二. 动画的属性

animation:动画名称 动画时常 速度曲线 延迟时间 重复次数 动画方向 执行完毕时状态;

动画的属性:(animation:)

            动画名字

            动画执行时间

            动画速度(linear匀速)  

            动画的延迟时间(单位:s)

            动画的循环次数(infinite无限循环)

            动画的方向(alternate反向执行)

            动画结束状态(默认结束状态在起点backwards) */

            animation: move 1s linear 2s infinite;

        /* 注意点1:infinite循环次数和方向alternate反向执行一搭配使用 */

        /* animation: move 2s linear 2s infinite alternate; */

         /* 注意点2:infinite循环次数,方向alternate反向执行无法和结束状态一起使用 */

        /* animation: move 1s alternate forwards; */

        /* animation: move 2s  forwards; */

三. 逐帧动画

animation-timing-function: steps(N);

将动画过程等分成N份

四. 鼠标经过暂停动画

/* 鼠标经过box,  则 ul 停止动画 */

.box:hover ul {

        animation-play-state: paused;

}

五. 多组动画

animation: 动画1, 动画2, ... 动画n

animation: run 0.5s steps(12) infinite,move 2s forwards;

            transition: all 2s;

            /* 注意点:动画可以定义多个,多个动画可以同时使用,记得使用逗号隔开 */