css动画
1.1-(2d)转换之倾斜.html
/* 第一个是X轴的倾斜,第二个是y轴的倾斜 */transform: skew(45deg, 10deg);/* 转换连写的时候,位移在前面。旋转在后面 */transform: translate(600px) rotate(108deg) scale(2.2);
1.2动画 (animation)
- 是css3中具有颠覆性的特征之一,可以通过设置多个节点来精确控制一个或一组动画,常用来 实现复杂的动画效果
 - 相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。
 
1.用keyframes定义动画(类似定义类选择器)
@keyframes 动画名称{0%{width: 100px;}100%{width: 200px;}}/*0% {transform: translate(0, 0);}*/
动画序列
- 0%是动画的开始,100%是动画的完成。这样的规则就是动画序列。
 - 在@keyframes中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果。
 - 动画是使元素从一种样式逐渐变化为另一种样式的效果。您可以改变任意多的样式任意多的次数。请用百分比来规定变化发生的时间,或用关键词”from”和”to”,等同于0%和100%。
 
- 元素使用动画
div {width: 200px;height: 200px;background-color: aqua;margin: 100px auto;/*调用动画*/animation-name :动画名称;/*持续时间★animation-duration:持续时间;}
 
@keyframes move {0% { transform: translate(0, 0); }25% {transform: translate(1000px, 0);}50% {transform: translate(1000px, 500px); }75% { transform: translate(0px, 500px); }100% {transform: translate(0, 0px);}}
2.1 透视
视距,是眼睛距屏幕的距离,加到父元素上,会有透明的效果
perspective: 800px;语法:perspective: 像素值;
作用
- 产生近大远小的视觉效果
 
注意点
- 给父元素添加
 - 取值一般为600px ~ 1000px
 
transform: translateX(100px);transform: translateY(100px);transform:translatez(-200px);3d位移连写transform(x,y,z)*/
2.2-3D旋转
transform: rotateZ(360deg);/*前边的之是1或者0,1代表旋转,0不旋转,分别对应的是x,y ,z轴*/旋转的连写transform: rotate3d(1,1,1,36odeg);transform: rotate3d(1,1,1,360deg);
语法
- rotateX(角度)
 - rotateY(角度)
 - rotateZ(角度) <=> rotate(角度)
 - rotate3d(x, y, z, 角度) (了解)
 
- 左手法则(判断旋转方向)
左手握住旋转轴,大拇指指向旋转轴正方向,其余手指卷曲的方向就是旋转方向 
4.2缩放
- transform: scaleZ(倍数);
 - transform: scale3d(x, y, z);
 
3.1 立体呈现
语法
- transform-style: preserve-3d;
 
作用
- 使盒子处于真正的三维空间
 - 注意给父元素添加
 
案例-3d转换立方体
需要使用transform-style
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {position: relative;/*转化3D,使盒子处在三维空间*/transform-style: preserve-3d;perspective: 800px;width: 200px;height: 200px;border: 1px solid #000;margin: 200px auto;}.box div {position: absolute;width: 100%;height: 100%;opacity: .5;}.box div:nth-child(1) {background-color: red;transform-origin: left center;transform: rotateY(-90deg);}.box div:nth-child(2) {background-color: green;transform-origin: right;transform: rotateY(90deg);}.box div:nth-child(3) {background-color: blue;transform-origin: top;transform: rotatex(90deg);}.box div:nth-child(4) {background-color: pink;transform-origin: bottom;transform: rotatex(-90deg);}.box div:nth-child(5) {background-color: yellow;}.box div:nth-child(6) {background-color: purple;transform: translatez(200px);}.box:hover {transform: rotate3d(1, 1, 2, 380deg);transition: all 2s;}</style></head><body><div class="box"><div></div><div></div><div></div><div></div><div></div><div></div></div></body></html>
3D转换
/ 父元素里边的子元素处于三维空间,给父元素添加 /
transform-style: preserve-3d;
linear 匀速状态属性
动画相关属性
/* 调用动画的名称 */animation-name: move;/* 一次动画播放的时间 */animation-duration: 1s;/* 动画延迟,动画等呆多久才开始 */animation-delay: 1s;/* 动画播放的次数,默认是一次,循环播放是infinte可以写数值*/animation-iteration-count: infinite;/* 动画停在什么位置,backwards是停在开始位置,forwards是停在结束位置 */animation-fill-mode: forwards;/* 动画播放的方向 alternate 逆播(反方向) */animation-direction: alternate;
总结
3D转换
- 位移
 - translate3d(), translateX() , translateY(), translateZ()
 - 旋转
 rotate3d(), rotateX(), rotateY(), rotateZ()
scale3d(), scaleX(), scaleY() , scaleZ()
perspective
transform-style: preserve-3d;
定义动画
@keyframes 动画名称 {}
使用动画
animation
