2D动画和3D动画详细版(一些样式建议用图片才能看出来)

1、定义语法@keyframes格式

(只有这个可以让它动起来,里面可以加属性)

@keyframes 动画名称 {0% {width: 100px;}100% {width: 200px}}
@keyframes是动画必须加的css样式,0%是刚加载的时候触发,100%是加载完成后触发,中间可以加0%~100%他们只是加载到一定百分比后触发

        - 0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列

        - 在 @keyframs 中规定某项 CSS 样式,就由创建当前样式逐渐改为新样式的动画效果

        - 动画是使元素从一个样式逐渐变化为另一个样式的效果,可以改变任意多的样式任意多的次数

        - 用百分比来规定变化发生的时间,或用 `from` 和 `to`,等同于 0% 和 100%

2、下面css和html标签的代码可以参考,下面的写的animation属性复制就可以执行但是要配合我写的样式和标签(相当于效果了)

css的样式

    .dox{width: 1000px;border: 1px solid;height: 500px;}.a{width: 100px;height: 100px;background-color: red;}

html的标签

<div class="dox"><div class="a">动画</div>
</div>

3、animation属性

animation:是在要实现动画的标签上加

(1)animation-name是动画名称给要实现动画的标签添加一个名称

 给要过度的动画起一个名字 animation-name:名字;

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(2)animation-duration是动画的过度时间单位是s(动画要花费的时长)

过度动画要花费的时间 3s就是3秒 

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(3)animation-timing-function是动画的执行速度值有:

动画速度曲线属性有ease由快到慢(默认)linear匀速,ease-in由慢到快,ease-in-out慢快慢,ease-in-out动画以底速度开始到结束,steps()指定了时间函数中的间隔数量(步数)

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;/* 动画执行的速度 *//* 动画速度曲线属性有ease由快到慢(默认),linear匀速,ease-in由慢到快ease-in-out慢快慢ease-in-out动画以底速度开始到结束steps()指定了时间函数中的间隔数量(步数) */animation-timing-function: ease; }/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(4) animation-timing-function: steps(2);  steps里面的2:代表动画执行的步数 

动画执行步数,steps里面的2:代表动画执行的步数(每个阶段都会执行比如0%-25%会执行两次第一次是12.5%第二次是25%)

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;/* 动画执行步数,steps里面的2:代表动画执行的步数(每个阶段都会执行比如0%-25%会执行两次第一次是12.5%第二次是25%) */animation-timing-function: steps(2);}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(5)animation-delay是延迟动画执行:动画等待多长时间执行(单位s)

延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 */animation-delay:2S;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(6)animation-iteration-count: infinite;      规定动画播放次数 

animation-iteration-count: infinite;规定动画播放次数 infinite: 无限循环 默认1 可以是数值  animation-iteration-count: 2;就是循环2次

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 *//* animation-delay:2S; *//* 动画执行次数 infinite是无限循环,也可以填写数字2表示循环两次 *//* animation-iteration-count: 2; 填写数字2表示循环两次*/animation-iteration-count: infinite;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(7)animation-direction: alternate;         是否逆行播放可以搭配播放次数

alternate不逆行播放(默认),alternate-reverse逆序播放动画

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 *//* animation-delay:2S; *//* 动画执行次数 infinite是无限循环,也可以填写数字2表示循环两次 *//* animation-iteration-count: 2; 填写数字2表示循环两次*//* animation-iteration-count: infinite; *//* 逆序播放,是否逆行播放可以搭配播放次数 *//* 不逆向播放 *//* animation-direction: alternate; *//* 逆序播放 */animation-direction:alternate-reverse; }/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(8)animation-fill-mode: forwards;          盒子动画结束后,停在结束位置      

(9) animation-play-state: paused`;          暂停动画,规定动画是否暂停或者播放

animation-play-state: paused`;          暂停动画,规定动画是否暂停或者播放,经常和鼠标经过等其他配合,使用简写属性里面不包含

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 *//* animation-delay:2S; *//* 动画执行次数 infinite是无限循环,也可以填写数字2表示循环两次 *//* animation-iteration-count: 2; 填写数字2表示循环两次*//* animation-iteration-count: infinite; *//* 逆序播放,是否逆行播放可以搭配播放次数 *//* 不逆向播放 *//* animation-direction: alternate; *//* 逆序播放 */animation-direction:alternate-reverse; }/* hover是鼠标滑动触发 */.a:hover{/* 暂停动画,规定动画是否暂停或者播放 paused是暂停播放*//* 鼠标滑过暂停动画 */animation-play-state: paused}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(10)简写方式

简写方式:

  1、animation: 动画名称 2s linear; 

          前面2个属性:动画名称 持续时间  一定要写    

  2、animation: 动画名称 duration timing-function delay iteration-count direction fill-mode    

        animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 起始与结束状态

  3、animation: move 2s ease 1s infinite ;    

        animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 ;

4、其他属性

1、标签transition的属性:

        多个简写的方式为transition:动画名称1 1s, 动画名称2 2s,用逗号隔开

        同时使用多个转换,其格式为 `transform: translate() rotate() scale()`

        transition-property: all 时间s;          

        要过渡的属性(all代表所有属性,还可以是宽或高) [ˈprɒpəti] 所有的

        transition-duration: 1s;                过度花费的时间

        transition-delay: 1s;               动画延时的时间

        transition-timing-function: ease;       动画速度曲线属性有ease由快到慢(默认),linear匀速,ease-in由慢到快,ease-in-out慢快慢,ease-in-out动画以底速度开始到结束,steps()指定了时间函数中的间隔数量(步数)


2、标签transform的属性:(x就是左右,Y就是上下)

(1)transform: rotate(度数); (旋转这个建议用图片更能看出效果)

transform: rotate(90deg); 旋转,单位是:deg,角度为正时,顺时针,角度为负时,逆时针

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;}/* name是*animation-name里面的name */@keyframes  name{         0%{transform: rotate(0deg)}                        /* 动画开始的位置 */25%{transform: rotate(90deg)}                      /* 动画执行到25%的位置 */50%{transform: rotate(180deg)}                     /* 动画执行到50%的的位置 */75%{transform: rotate(240deg)}                     /* 动画执行到75%的的位置 */100%{transform: rotate(360deg)}                    /* 动画执行完的位置 */}

(2)transform-origin: x y;         设置元素旋转中心点, x 和 y 用空格隔开还可以给 x y ,设置像素或者方位名词(`top`、`bottom`、`left`、`right`、`center`  或   50px  50px)

transform-origin: x y;         设置元素旋转中心点, x 和 y 用空格隔开还可以给 x y ,设置像素或者方位名词(`top`、`bottom`、`left`、`right`、`center`  或   50px  50px)

(3)transform: scale(n, m);             按比例缩放,可以设置转换中心点缩放默认以中心点缩放,而且不影响其他盒子

transform: scale(n, m);             按比例缩放,可以设置转换中心点缩放默认以中心点缩放,而且不影响其他盒子

(4)transform: translate(x, y);             移动,x就是x轴上移动位置 y 就是y轴上移动位置 中间用逗号分隔

transform: translate(x, y);             移动,x就是x轴上移动位置 y 就是y轴上移动位置 中间用逗号分隔

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

4、3D动画和2D写法差不多不用我多写了吧,不会可以参考2D

3D (动画属性是通用的也可以简写)(3D一般都用定位写的)(3D是在动画的基础加上新加移动的属性)

 (1)开启3D必须加下面的属性,这属性基本上都是给父元素加的

transform-style: flat;              代表子元素不开启 3D 立体空间,默认的不开启,代码写给父级,但是影响的是子盒子

transform-style: preserve-3d;      子元素开启3D立体空间,代码写给父级,但是影响的是子盒子

        perspective:"500px"             透视(单位px),如果想要网页产生 `3D` 效果需要透视(理解成 `3D` 物体投影的 `2D` 平面上),透视也称为视距,所谓的视距就是人的眼睛到屏幕的距离**透视需要写在被视察元素的父盒子上面**

    (2)标签transform的属性:

        transform: translateX(100px);           仅仅是在 x 轴上移动

        transform: translateY(100px):           仅仅是在 y 轴上移动

        transform: translateZ(100px):           仅仅是在 z 轴上移动

        transform: translate3d(x, y, z):            其中x、y、z 分别指要移动的轴的方向的距离,注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充

        transform: rotateX(45deg);          沿着 x 轴正方向旋转 45 度(X正数是往右走,负数是往左)

        transform: rotateY(45deg);          沿着 y 轴正方向旋转 45 度(Y正数是往下走,负数是往上)

        transform: rotateZ(45deg)`          沿着 z 轴正方向旋转 45 度(Z正数是往前走,负数是往后)

        transform: rotate3d(1, 1, 1, 45deg)`        沿着自定义(x, y, z, deg)轴旋转 45 deg 为角度

        0%{ transform: rotateX(0deg);}30%{ transform: rotateX(90deg);}60%{ transform: rotateX(180deg);}100%{ transform: rotateX(360deg);}

    (3)维坐标系

        - x 轴:水平向右  -- **注意:x 轴右边是正值,左边是负值**

        - y 轴:垂直向下  -- **注意:y 轴下面是正值,上面是负值**

        - z 轴:垂直屏幕  --  **注意:往外边的是正值,往里面的是负值**

2D动画和3D动画详细版(一些样式建议用图片才能看出来)

1、定义语法@keyframes格式

(只有这个可以让它动起来,里面可以加属性)

@keyframes 动画名称 {0% {width: 100px;}100% {width: 200px}}
@keyframes是动画必须加的css样式,0%是刚加载的时候触发,100%是加载完成后触发,中间可以加0%~100%他们只是加载到一定百分比后触发

        - 0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列

        - 在 @keyframs 中规定某项 CSS 样式,就由创建当前样式逐渐改为新样式的动画效果

        - 动画是使元素从一个样式逐渐变化为另一个样式的效果,可以改变任意多的样式任意多的次数

        - 用百分比来规定变化发生的时间,或用 `from` 和 `to`,等同于 0% 和 100%

2、下面css和html标签的代码可以参考,下面的写的animation属性复制就可以执行但是要配合我写的样式和标签(相当于效果了)

css的样式

    .dox{width: 1000px;border: 1px solid;height: 500px;}.a{width: 100px;height: 100px;background-color: red;}

html的标签

<div class="dox"><div class="a">动画</div>
</div>

3、animation属性

animation:是在要实现动画的标签上加

(1)animation-name是动画名称给要实现动画的标签添加一个名称

 给要过度的动画起一个名字 animation-name:名字;

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(2)animation-duration是动画的过度时间单位是s(动画要花费的时长)

过度动画要花费的时间 3s就是3秒 

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(3)animation-timing-function是动画的执行速度值有:

动画速度曲线属性有ease由快到慢(默认)linear匀速,ease-in由慢到快,ease-in-out慢快慢,ease-in-out动画以底速度开始到结束,steps()指定了时间函数中的间隔数量(步数)

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;/* 动画执行的速度 *//* 动画速度曲线属性有ease由快到慢(默认),linear匀速,ease-in由慢到快ease-in-out慢快慢ease-in-out动画以底速度开始到结束steps()指定了时间函数中的间隔数量(步数) */animation-timing-function: ease; }/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(4) animation-timing-function: steps(2);  steps里面的2:代表动画执行的步数 

动画执行步数,steps里面的2:代表动画执行的步数(每个阶段都会执行比如0%-25%会执行两次第一次是12.5%第二次是25%)

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;/* 动画执行步数,steps里面的2:代表动画执行的步数(每个阶段都会执行比如0%-25%会执行两次第一次是12.5%第二次是25%) */animation-timing-function: steps(2);}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(5)animation-delay是延迟动画执行:动画等待多长时间执行(单位s)

延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 */animation-delay:2S;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(6)animation-iteration-count: infinite;      规定动画播放次数 

animation-iteration-count: infinite;规定动画播放次数 infinite: 无限循环 默认1 可以是数值  animation-iteration-count: 2;就是循环2次

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 *//* animation-delay:2S; *//* 动画执行次数 infinite是无限循环,也可以填写数字2表示循环两次 *//* animation-iteration-count: 2; 填写数字2表示循环两次*/animation-iteration-count: infinite;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(7)animation-direction: alternate;         是否逆行播放可以搭配播放次数

alternate不逆行播放(默认),alternate-reverse逆序播放动画

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 *//* animation-delay:2S; *//* 动画执行次数 infinite是无限循环,也可以填写数字2表示循环两次 *//* animation-iteration-count: 2; 填写数字2表示循环两次*//* animation-iteration-count: infinite; *//* 逆序播放,是否逆行播放可以搭配播放次数 *//* 不逆向播放 *//* animation-direction: alternate; *//* 逆序播放 */animation-direction:alternate-reverse; }/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(8)animation-fill-mode: forwards;          盒子动画结束后,停在结束位置      

(9) animation-play-state: paused`;          暂停动画,规定动画是否暂停或者播放

animation-play-state: paused`;          暂停动画,规定动画是否暂停或者播放,经常和鼠标经过等其他配合,使用简写属性里面不包含

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒执行完动画 */animation-duration: 3s;/* 延迟过度动画执行时间 2s就是2秒延迟2秒在执行动画 *//* animation-delay:2S; *//* 动画执行次数 infinite是无限循环,也可以填写数字2表示循环两次 *//* animation-iteration-count: 2; 填写数字2表示循环两次*//* animation-iteration-count: infinite; *//* 逆序播放,是否逆行播放可以搭配播放次数 *//* 不逆向播放 *//* animation-direction: alternate; *//* 逆序播放 */animation-direction:alternate-reverse; }/* hover是鼠标滑动触发 */.a:hover{/* 暂停动画,规定动画是否暂停或者播放 paused是暂停播放*//* 鼠标滑过暂停动画 */animation-play-state: paused}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

(10)简写方式

简写方式:

  1、animation: 动画名称 2s linear; 

          前面2个属性:动画名称 持续时间  一定要写    

  2、animation: 动画名称 duration timing-function delay iteration-count direction fill-mode    

        animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 起始与结束状态

  3、animation: move 2s ease 1s infinite ;    

        animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 ;

4、其他属性

1、标签transition的属性:

        多个简写的方式为transition:动画名称1 1s, 动画名称2 2s,用逗号隔开

        同时使用多个转换,其格式为 `transform: translate() rotate() scale()`

        transition-property: all 时间s;          

        要过渡的属性(all代表所有属性,还可以是宽或高) [ˈprɒpəti] 所有的

        transition-duration: 1s;                过度花费的时间

        transition-delay: 1s;               动画延时的时间

        transition-timing-function: ease;       动画速度曲线属性有ease由快到慢(默认),linear匀速,ease-in由慢到快,ease-in-out慢快慢,ease-in-out动画以底速度开始到结束,steps()指定了时间函数中的间隔数量(步数)


2、标签transform的属性:(x就是左右,Y就是上下)

(1)transform: rotate(度数); (旋转这个建议用图片更能看出效果)

transform: rotate(90deg); 旋转,单位是:deg,角度为正时,顺时针,角度为负时,逆时针

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;}/* name是*animation-name里面的name */@keyframes  name{         0%{transform: rotate(0deg)}                        /* 动画开始的位置 */25%{transform: rotate(90deg)}                      /* 动画执行到25%的位置 */50%{transform: rotate(180deg)}                     /* 动画执行到50%的的位置 */75%{transform: rotate(240deg)}                     /* 动画执行到75%的的位置 */100%{transform: rotate(360deg)}                    /* 动画执行完的位置 */}

(2)transform-origin: x y;         设置元素旋转中心点, x 和 y 用空格隔开还可以给 x y ,设置像素或者方位名词(`top`、`bottom`、`left`、`right`、`center`  或   50px  50px)

transform-origin: x y;         设置元素旋转中心点, x 和 y 用空格隔开还可以给 x y ,设置像素或者方位名词(`top`、`bottom`、`left`、`right`、`center`  或   50px  50px)

(3)transform: scale(n, m);             按比例缩放,可以设置转换中心点缩放默认以中心点缩放,而且不影响其他盒子

transform: scale(n, m);             按比例缩放,可以设置转换中心点缩放默认以中心点缩放,而且不影响其他盒子

(4)transform: translate(x, y);             移动,x就是x轴上移动位置 y 就是y轴上移动位置 中间用逗号分隔

transform: translate(x, y);             移动,x就是x轴上移动位置 y 就是y轴上移动位置 中间用逗号分隔

   .a{width: 100px;height: 100px;background-color: red;/* 给要过度的动画起一个名字 animation-name:名字;*/animation-name:name;/* 过度动画要花费的时间 3s就是3秒 */animation-duration: 3s;}/* name是*animation-name里面的name */@keyframes  name{0%{transform: translate(0px)}              /* 动画开始的位置 */25%{transform: translate(500px)}           /* 动画执行到25%的位置 */50%{transform: translate(500px,500px)}     /* 动画执行到50%的的位置 */75%{transform: translate(0px, 500px)}      /* 动画执行到75%的的位置 */100%{transform: translate(0px)}            /* 动画执行完的位置 */}

4、3D动画和2D写法差不多不用我多写了吧,不会可以参考2D

3D (动画属性是通用的也可以简写)(3D一般都用定位写的)(3D是在动画的基础加上新加移动的属性)

 (1)开启3D必须加下面的属性,这属性基本上都是给父元素加的

transform-style: flat;              代表子元素不开启 3D 立体空间,默认的不开启,代码写给父级,但是影响的是子盒子

transform-style: preserve-3d;      子元素开启3D立体空间,代码写给父级,但是影响的是子盒子

        perspective:"500px"             透视(单位px),如果想要网页产生 `3D` 效果需要透视(理解成 `3D` 物体投影的 `2D` 平面上),透视也称为视距,所谓的视距就是人的眼睛到屏幕的距离**透视需要写在被视察元素的父盒子上面**

    (2)标签transform的属性:

        transform: translateX(100px);           仅仅是在 x 轴上移动

        transform: translateY(100px):           仅仅是在 y 轴上移动

        transform: translateZ(100px):           仅仅是在 z 轴上移动

        transform: translate3d(x, y, z):            其中x、y、z 分别指要移动的轴的方向的距离,注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充

        transform: rotateX(45deg);          沿着 x 轴正方向旋转 45 度(X正数是往右走,负数是往左)

        transform: rotateY(45deg);          沿着 y 轴正方向旋转 45 度(Y正数是往下走,负数是往上)

        transform: rotateZ(45deg)`          沿着 z 轴正方向旋转 45 度(Z正数是往前走,负数是往后)

        transform: rotate3d(1, 1, 1, 45deg)`        沿着自定义(x, y, z, deg)轴旋转 45 deg 为角度

        0%{ transform: rotateX(0deg);}30%{ transform: rotateX(90deg);}60%{ transform: rotateX(180deg);}100%{ transform: rotateX(360deg);}

    (3)维坐标系

        - x 轴:水平向右  -- **注意:x 轴右边是正值,左边是负值**

        - y 轴:垂直向下  -- **注意:y 轴下面是正值,上面是负值**

        - z 轴:垂直屏幕  --  **注意:往外边的是正值,往里面的是负值**