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