CSS动作
5.过渡 tansition (由一个状态过渡到另外一个状态的过程)
transition 过渡
参数1: 过渡的时间,s代表秒,ms代表毫秒,1s=1000ms
参数2: 过渡的属性,all代表所有的属性
参数3: 过渡的方式,ease是默认的(减速)
linear 匀速
ease-in 加速
ease-out 减速
ease-in-out 先加速后减速
cubic-bezier 贝塞尔曲线
生成贝塞尔曲线http://cubic-bezier.com/
div{
width: 100px;
height: 100px;
background: red;
transition: 2s all cubic-bezier(.62,1.06,.67,-0.74);
}
div:hover{
width: 600px;
height: 100px;
background: blue;
}
<div></div>
transition: 1s width,2s height,3s background;
这个过渡一共需要3秒,第一秒改变宽,第二秒改变高,第三秒改变背景
transition: 1s width,2s 2s height,3s 1s background;
这个过渡一共需要四秒,第一秒改变宽,第二秒改变高用两秒,第三秒改变背景用一秒
6.transform 变换 只针对块元素有作用
rotate(度数) 旋转 单位 deg
rotateX X轴旋转
rotateY Y轴旋转
skew(度数) 倾斜 单位deg
skewX X轴倾斜
skewY Y轴倾斜
scale(倍数) 缩放
scaleX X轴缩放
scaleY Y轴缩放
translate(像素) 位移
translateX X轴位移
translateY Y轴位移
transform执行的顺序是先写的后执行,后写的先执行
如果没有将他们合并写在一起的话,那么只会执行最后写的那个动作。
transform: rotate(360deg);/*默认是垂直平面旋转*/
transform: skew(45deg); /*默认是X轴倾斜*/
transform: skewX(45deg);
transform: skewY(45deg);
transform: skew(30deg,30deg);
transform: scale(2);/*默认是xy都变化*/
transform: scaleX(2);
transform: scaleY(2);
transform: scale(2,3);
transform: translate(100px);/*默认状态是向X轴移动*/
transform: translateX(200px);
transform: translateY(150px);
transform: translate(-100px,-100px);
transform: scale(2) translate(100px) rotate(30deg) skew(45deg,45deg);
6-1 改变基点
transform-origin 变换的基点
div{
width: 200px;
height: 200px;
background: red;
margin: 200px auto;
transition: 1s;
transform-origin: left center;
transform-origin: right bottom;
transform-origin: 20px 30px;
transform-origin: center center;
}
div:hover{
transform: rotate(360deg);
transform: scale(2);
transform: skew(45deg);
transform: translate(200px);
}
<div>kaivon</div>
7.3D空间
把一个盒子转成一个3D空间,需要配合景深来使用
transform-style: preserve-3d;
perspective: 800px;
景深的值越小效果越明显,不过一般取值800.
.box{
width: 100px;
height: 100px;
padding: 100px;
border: 5px solid #000;
margin: 100px auto;
transform-style: preserve-3d;
perspective: 100px;
}
.child{
width: 100px;
height: 100px;
background: red;
transition: 1s;
}
.box:hover .child{
transform: rotateX(180deg);
}
<divclass="box">
<divclass="child">kaivon</div>
</div>
8animation 动画
@keyframes name{ } 关键帧
参数1: 运动的时间
参数2: 关键帧的名字
参数3: 过渡的方式,ease是默认的(减速)
linear 匀速
ease-in 加速
ease-out 减速
ease-in-out 先加速后减速
cubic-bezier 贝塞尔曲线
生成贝塞尔曲线http://cubic-bezier.com/
参数4: 重复的次数
数字
infinite 无限次
参数5: 动画的顺序
alternate 偶数次数会倒着走
normal 正常顺序
8-2 animation-play-state 播放与暂停
paused 暂停
running 播放
.box{
width: 400px;
height: 400px;
border: 1px solid #000;
position: relative;
}
.box div{
width: 100px;
height: 100px;
background: red;
position: absolute;
left: 0;
top: 0;
animation: 3s move linear infinite normal;
}
.box:hover div{
animation-play-state: paused;
}
@keyframes move{
0%{
left: 0;
top: 0;
}
25%{
left: 300px;
top: 0;
}
50%{
left: 300px;
top: 300px;
}
75%{
left: 0;
top: 300px;
}
100%{
left: 0;
top: 0;
}
}
<divclass="box">
<div></div>
</div>