第九天transform animation
transform常用的几个值
translate:位移
- 水平位移:transform : translateX(x轴距离)
- 垂直位移:transform : translateY(y轴距离)
- 复合位移:transform : translate(x轴距离 y轴距离)
scale:缩放
- transform :scale(X,Y)(X代表的是缩放宽度的X倍 Y代表的是缩放长度的Y倍 )
- transform :scale(n) (代表同时缩放,x,y的n倍)
rotate: 旋转
- transform:rotateX(45deg):代表的是围绕x轴旋转45deg;
- transform:rotateY(45deg):代表的是围绕y轴旋转45deg;
- transform:rotateZ(45deg):代表的是围绕z轴旋转45deg;
skew:倾斜
- transform:skewX(45deg):代表的是围绕x轴倾斜45deg;
- transform:skewY(45deg):代表的是围绕y轴倾斜45deg;
- transform:skew(45deg):代表的是围绕x,y轴倾斜
transform-origin
x,y;改变元素变形时候的作用原点
- 水平方向:left center right
- 垂直方向:top center bottom
transform-style
- flat:默认平面
- preserve-3d:三维空间 立体
perspective
代表观察者距舞蹈的距离,给父级元素添加这个属性,他的子元素有一个近大远小的效果
过渡动画
transition
- 动画的属性: transition-property:height;
- 动画执行的时间: transition-duration: 2s;
- 动画曲线: transition-timing-function: linear;
- 延迟: transition-delay: 1s;
简写:transition:height 2s linear 1s;
animation
- animation-name 指定要绑定到选择器的关键帧的名称
- animation-duration 动画指定需要多少秒或毫秒完成
- animation-timing-function 设置动画将如何完成一一个周期
- animation-delay 设置动画在启动前的延迟间隔。
- 动画执行的次数: animation-iteration-count ,可以是具体的数字,比如3代表就是执行3次;还可以设置成无限循环infinite;
- 设置动画的状态: animation-fill-mode ;
- forwards:当动画结束,停留在最后一帧
- backwards:在动画中有延迟的时候,设置backwards,会迅速的跑到第一桢开始执行 动画
- both:当设置的有 延迟的时候,动画迅速以第一桢开始,当动画结束的时候,停留在最后一帧。
简写: animation:name 2s linear infinite;
案例
运动的小方块
<!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>
.main{
width: 600px;
height: 600px;
margin:0 auto;
border: 2px dashed pink;
}
.box{
width: 100px;
height: 100px;
background: yellow;
animation: box 5s linear infinite;
}
@keyframes box{
0%{
transform: translate(0px,0);
}
25%{
transform: translate(500px,0);
}
50%{
transform: translate(500px,500px);
}
75%{
transform: translate(0px,500px);
}
100%{
transform: translate(0px,0);
}
}
</style>
</head>
<body>
<div class="main">
<div class="box"></div>
</div>
</body>
</html>
钟摆案例
<!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>
body{
margin: 0 auto;
}
.box{
width: 20px;
height: 200px;
border: 2px solid red;
margin: 0 auto;
position: relative;
transform-origin: center top;
animation:run 3s linear infinite;
}
.round{
width: 100px;
height: 100px;
background:yellow ;
border-radius: 50%;
position: absolute;
top: 200px;
left: -40px;
}
@keyframes run{
0%{
transform:rotate(0deg)
}
25%{
transform:rotate(30deg);
background:pink;
}
50%{
transform:rotate(0deg)
}
70%{
transform:rotate(-30deg);
background:rebeccapurple;
}
100%{
transform:rotate(0deg)
}
}
</style>
</head>
<body>
<div class="box">
<div class="round"></div>
</div>
</body>
</html>