css3 动画
transition (渐变动画)
transition-property(变换的属性,即那种形式的变换:大小、位置、扭曲等)
值为:
- none
- all
- 元素属性名(用,隔开)
transition-duration(变换延续的时间)
它是用来设置转换过程的持续时间,单位是s或者ms,默认值为0;
transition-timing-function (变换的速率)
- ease:逐渐变慢(默认),等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0);
- linear:匀速,等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0);
- ease-in:加速,等同于贝塞尔曲线(0.42, 0, 1.0, 1.0);
- ease-out:减速,等同于贝塞尔曲线(0, 0, 0.58, 1.0);
- ease-in-out:先加速后减速,等同于贝塞尔曲线(0.42, 0, 0.58, 1.0);
- cubic-bezier:自定义贝塞尔曲线。
transition-delay(变换的延时)
它是来设置过渡动画开始执行的时间,单位是s或者ms,默认值为0;
transform (转变动画)
transform可以用来设置元素的形状改变,主要有以下几种变形:rotate(旋转)、scale(缩放)、skew(扭曲)、translate(移动)和matrix(矩阵变形),语法如下:
transform : none | <transform-function> [ <transform-function> ]*
transform-origin 基点
所有的变形都是基于基点,基点默认为元素的中心点。用法:transform-origin: (x, y,z),其中 x , y ,z 的值可以是百分比、rem 或者是 px 等等,也可以用表示位置的单词来表示例如:x 可以用left、center、right;y 可以用top、center、bottom;z 可以用top、center、bottom。(有z 3d 无z 2d)
rotate 旋转
表示通过指定的角度对元素进行旋转变形,如果是正数则顺时针旋转,如果是负数则逆时针旋转,例如:
transform: rotate(30deg);
scale 缩放
它有三种用法:scale(<number>[, <number>])、scaleX(<number>)和scaleY(<number>);分别代表水平和垂直方向同时缩放、水平方向的缩放以及垂直方向的缩放,入参代表水平或者垂直方向的缩放比例。缩放比例如果大于1则放大,反之则缩小,如果等于1代表原始大小。
translate 移动
移动也分三种情况:translate(<translation-value>[, <translation-value>])、translateX(<translation-value>)和translateY(<translation-value>);分别代表水平和垂直的移动、水平方向的移动以及垂直方向同时移动,移动单位是 CSS 中的长度单位:px、rem等;
skew 扭曲
扭曲同样也有三种情况,skew(<angle>[, <angle>])、skewX(<angle>)和skewY(<angle>);同样也是水平和垂直方向同时扭曲、水平方向的扭曲以及垂直方向的扭曲,单位为角度。
animation (自定义动画,逐帧动画)
关键帧:
@keyframes animationName {
0% {
properties: value;
}
percentage {
properties: value;
}
100% {
properties: value;
}
}
- animationName:动画名称,开发人员自己命名;
- percentage:为百分比值,可以添加多个百分比值;
- properties:样式属性名称,例如:color、left、width等等。
animation-name
是用来设置动画的(keyframe)名称,可以同时赋值多个动画名称,用,隔开:
animation-duration
完成该动画需要花费的时间,秒或毫秒
animation-timing-function
跟 transition-timing-function 一样
animation-delay
它是来设置动画的开始时间,单位是s或者ms,默认值为0:
animation-iteration-count
设置动画执行的次数,infinite为无限次循环。
animation-direction
是否轮询反向播放动画。normal,默认值,动画应该正常播放;alternate,动画应该轮流反向播放。
animation-fill-mode:forwards
让动画停留在最后结束(不要在执行次数里写 infinite )