目录
动画
动画的基本使用
定义动画
用keyframes定义动画
@keyframes 动画名称{
0%{
width:100px;
}
100%{
width:200px;
}
}
动画序列
- %是动画的开始,100%是动画的完成。这样的规则就是动画序列。
- @keyframes中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果。
- 动画是使元素从一种样式逐渐变化为另一种样式的效果。可以改变任意多的样式任意多的次数
- 用百分比来规定变化发生的时间,或用关键词"from"和"to",等同于0%和100%。
调用动画
<style>
@keyframes wid {
0% {
width: 100px;
}
100% {
width: 500px;
}
}
div {
background-color: black;
height: 500px;
width: 500px;
margin: 300px auto;
}
div:hover {
/* 调用动画 */
animation-name: wid;
/* 持续时间 */
animation-duration: 5s;
}
</style>
<body>
<div>123</div>
</body>
动画常用属性
属性 | 描述 |
---|---|
@keyframes | 描述动画 |
animation | 所有动画属性的简写属性 (除了animation-play-state属性) |
animation-name | 需要调用动画的名称 (@keyframes动画名称) |
animation-duration | 规定动画完成一个周期花费的时间 (默认为0) |
animation-timing-function | 规定动画的速度曲线 (默认为ease) |
animation-delay | 规定动画何时开始 (默认为0) |
animation-iteration-count | 规定动画被播放的次数 (默认为0,infinite为无限播放) |
animation-direction | 规定动画是否在下一周期逆向播放 (默认为normal,alternate为逆播放) |
animation-play-state | 规定动画是否正在运行或暂停 (默认为running,paused为暂停) |
animation-fill-mode | 规定动画结束后状态 (forwards为保持结束状态,backwards为回到起始状态) |
动画简写属性
animation:动画名称持续时间运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;
- 简写属性里面不包含animation-play-state
- 暂停动画:animation-play-state: puased;经常和鼠标经过等其他配合使用
- 想要动画走回来,而不是直接跳回来:animation-direction:alternate
- 盒子动画结束后,停在结束位置:animation-fill-mode: forwards
速度曲线调节
animation-timing-function:规定动画的速度曲线,默认是"ease"
值 | 描述 |
---|---|
linear | 动画从头到尾的速度是相同的。匀速 |
ease | 默认,以低速开始,然后加快,在介绍前变慢。 |
ease-in | 动画以低速开始 |
ease-out | 动画以低速结束 |
ease-in-out | 动画以低速开始和结束 |
steps() | 指定了时间函数中的间隔数量(步长) |
!!
- steps就是分几步来完成我们的动画,有了steps就不要再写ease或linear
- 元素可以添加多个动画,用逗号分隔
3D转换
三维坐标系
x轴:水平向右(右边为正值,左边为负值) y轴:垂直向下(下面为正值,上面为负值) z轴:垂直屏幕(向外为正值,向里为负值)
移动translate3d
translformtranslateX(...px)
在x轴上移动
translformtranslateY(...px)
在Y轴上移动
translform.translateZ(...px)
在Z轴上移动(注意:translateZ一般用px单位)
transform : translate3d(x,y,z)
x,y,z分别指要移动的轴的方向的距离
透视perspective
- 想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内)
- 透视也称为视距:视距就是人的眼睛到屏幕的距离
- 距离视觉点越近的在电脑平面成像越大,越远成像越小
- 透视的单位是像素
透视写在被观察元素的盒子上面的
d:视距,距离人的眼睛到屏幕的距离。
z:z轴,物体距离屏幕的距离,z轴越大(正值)我们看到的物体就越大。
旋转rotate3d
transform.rotateX(...deg)
沿看×轴正方前旋转...度
transform.rotateY(...deg)
沿着y轴正方向旋转...deg
transform.rotateZ(...deg)
沿着Z轴正方向旋转...deg
transform.rotate3d(x,y,z,deg)
沿着自定义轴旋转deg为角度
xyz是表示旋转轴的矢量,是标示你是否希望沿着该轴旋转,最后一个标示旋转的角度。
transform:rotate3d(1,0,0,45deg)就是沿着×轴旋转45deg
transform.rotate3d(1,1,0,45deg)就是沿着对角线旋转45deg
左手准则
左手的手拇指指向x(y)轴的正方向
其余手指的弯曲方向就是该元素沿着x(y)轴旋转的方向
3D呈现transform-style
控制子元素是否开启三维立体环境。
transform-style:flat
子元素不开启3d立体空间默认的
transform-style : preserve-3d
子元素开启立体空间
代码写给父级,但是影响的是子盒子