一、animation属性也是一个简写属性,用于设置六个动画属性。

用法:animation: name duration timing-function delay iteration-count direction;

这六个属性值分别为:

animation-name规定需要绑定到选择器的 keyframe 名称
animation-duration规定完成动画所花费的时间,以秒或毫秒计。
animation-timing-function规定动画的速度曲线。
animation-delay规定在动画开始之前的延迟。
animation-iteration-count规定动画应该播放的次数。
animation-direction规定是否应该轮流反向播放动画。

1.animation-name

指定要绑定到选择器的关键帧的名称。使用方法:changeTips就是我自定义的名字。也就是animation里面的name的值。

@keyframes changeTips {
    0%{
        width: 38px;
    }

    50%{
        width: 52px;
    }

    100%{
        width: 66px;
    }
}

2.animation-duration

定义动画完成一个周期需要多少秒或毫秒。

3.animation-delay

属性定义动画什么时候开始。

  • 单位可以是秒(s)或毫秒(ms)。
  • 单位可以是负值,-2s表示动画立马开始,但跳过 2 秒进入动画,即前2秒的动画不执行,直接跳过前2秒进入动画。
  • 类似音波的加载效果demo地址:http://codepen.io/aSuncat/pen/ALLNpE

4. animation-timing-function

指定动画将如何完成一个周期。

说明
linear动画从头到尾的速度是相同的。
ease默认。动画以低速开始,然后加快,在结束前变慢。
ease-in动画以低速开始。
ease-out动画以低速结束。
ease-in-out动画以低速开始和结束。
cubic-bezier(n,n,n,n)在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。
step-start在变化过程中,都是以下一帧的显示效果来填充间隔动画
step-end在变化过程中,都是以上一帧的显示效果来填充间隔动画
steps()可以传入两个参数,第一个是一个大于0的整数,他是将间隔动画等分成指定数目的小间隔动画,然后根据第二个参数来决定显示效果。第二个参数设置后其实和step-start,step-end同义,在分成的小间隔动画中判断显示效果。

5. animation-iteration-count

定义动画应该播放多少次。

说明
n一个数字,定义应该播放多少次动画
infinite指定动画应该播放无限次(永远)

6.animation-direction

定义是否循环交替反向播放动画。

说明
normal默认值。动画按正常播放。
reverse动画反向播放。
alternate动画在奇数次(1、3、5…)正向播放,在偶数次(2、4、6…)反向播放。
alternate-reverse动画在奇数次(1、3、5…)反向播放,在偶数次(2、4、6…)正向播放。
initial设置该属性为它的默认值。
inherit从父元素继承该属性。
  • 如果动画被设置为只播放一次,该属性将不起作用。
  • 动画循环播放时,每次都是从结束状态跳回到起始状态,再开始播放。animation-direction属性可以重写该行为。

7.animation-fill-mode

规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。

说明
none默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
forwards在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。
backwards动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是 from 关键帧中的值(当 animation-direction 为 “normal” 或 “alternate” 时)或 to 关键帧中的值(当 animation-direction 为 “reverse” 或 “alternate-reverse” 时)。
both动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。
initial设置该属性为它的默认值。
inherit从父元素继承该属性。
  • 默认情况下,CSS 动画在第一个关键帧播放完之前不会影响元素,在最后一个关键帧完成后停止影响元素。animation-fill-mode 属性可重写该行为。

  • forwads表示让动画停留在结束状态,即停留在最后一帧。

  • backwords:

    • 当 animation-direction 为 “normal” 或 “alternate” 时,回到第一帧。
    • 当 animation-direction 为 “reverse” 或 “alternate-reverse” 时,停留在最后一帧。

8.animation-play-state:指定动画是否正在运行或已暂停。

说明
paused指定暂停动画。
running指定正在运行的动画。
  • 在JavaScript中使用此属性在一个周期中暂停动画。
  • 线条鼠标悬停开始动画demo地址:http://codepen.io/aSuncat/pen/BLLbko

二、动画相关

1.animation的简写(即上述属性的介绍顺序)

animation: name duration timing-function delay iteration-count direction fill-mode play-state;

具体化可以记成一下形式:

animation:myAnim 1s linear 1s infinite alternate both running;

2.keyframes:定义动画规则,关键帧。

说明
animationname必需的。定义animation的名称。
keyframes-selector必需的。动画持续时间的百分比。
css-styles必需的。一个或多个合法的CSS样式属性

2.1 写法自由

2.1.1 指定的变化时发生时使用%,或关键字”from”和”to”,这是和0%到100%相同。以下两段代码效果相同。

@keyframes myAnim{
  from { background: #f00; }
  50% { background: #0f0; }
  to { background: yellowgreen; }
}
12345
@keyframes myAnim{
  0% { background: #f00; }
  50% { background: #0f0; }
  100% { background: yellowgreen; }
}

2.1.2 如果省略某个状态,浏览器会自动推算中间状态。但是,为了获得最佳的浏览器支持,应该始终定义0%和100%的选择器。

@keyframes rainbow {
  50% { background: orange }
  to { background: yellowgreen }
}

@keyframes rainbow {
  to { background: yellowgreen }
}

2.1.3 可以将多个状态写在一行。

@keyframes myAnim{
  0%,100% { background: #f00; }
  50% { background: #0f0; 
}

3.浏览器前缀

IE 10和Firefox(>= 16)支持没有前缀的animation,firefox(<16)使用-moz-前缀,因为现在firefox的版本也都不低,所以firefox都直接使用没有前缀的animation。
而chrome,safari,opera不支持,所以必须使用webkit前缀。
使用示例如下:

div{
    animation:myAnim 1s;
    -webkit-animation:myAnim 1s;
}
@keyframes myAnim{
  0% { background: #f00; }
  50% { background: #0f0; }
  100% { background: yellowgreen; }
}
@-webkit-keyframes myAnim{
  0% { background: #f00; }
  50% { background: #0f0; }
  100% { background: yellowgreen; }
}

4.定义动画时,必须定义动画的名称和动画的持续时间。如果省略持续时间,动画将无法运行,因为默认值是0。

三、animate.css动画分类

官方在线体验地址:https://animate.style/

1.Fading Entrances-淡入、淡出

说明
fadeIn淡入
fadeInDown向下淡入
fadeInDownBig向下快速淡入
fadeInLeft从左淡入
fadeInLeftBig从左快速淡入
fadeInRight从右淡入
fadeInRightBig从右快速淡入
fadeInUp向上淡入
fadeInUpBig向上快速淡入
fadeOut淡出
fadeOutDown向下淡出
fadeOutDownBig向下快速淡出
fadeOutLeft向左淡出
fadeOutLeftBig向左快速淡出
fadeOutRight向右淡出
fadeOutRightBig向右快速淡出
fadeOutUp向上淡出
fadeOutUpBig向上快速淡出

2.Bouncing Entrances-弹跳进出

说明
bounceIn弹跳进入
bounceInDown向下弹跳进入
bounceInLeft从左弹跳进入
bounceInRight从右弹跳进入
bounceInUp向上弹跳进入
bounceOut弹跳退出
bounceOutDown向下弹跳退出
bounceOutLeft向左弹跳退出
bounceOutRight向右弹跳退出
bounceOutUp向上弹跳退出

3.Zoom Entrances-缩放进出

说明
zoomIn放大进入
zoomInDown向下放大进入
zoomInLeft从左放大进入
zoomInRight从右放大进入
zoomInUp向上放大进入
zoomOut缩小退出
zoomOutDown向下缩小退出
zoomOutLeft向左缩小退出
zoomOutRight向右缩小退出
zoomOutUp向上缩小退出

4.Rotating Entrances-旋转进出

说明
rotateIn顺时针旋转进入
rotateInDownLeft从左往下旋入
rotateInDownRight从右往下旋入
rotateInUpLeft从左往上旋入
rotateInUpRight从右往上旋入
rotateOut顺时针旋转退出
rotateOutDownLeft向左下旋出
rotateOutDownRight向右下旋出
rotateOutUpLeft向左上旋出
rotateOutUpRight向右上旋出

5.flip-翻转水平、垂直

说明
flip放大翻转缩小
flipInX水平翻转进入
flipInY垂直翻转进入
flipOutX水平翻转退出
flipOutY垂直翻转退出

6.Sliding Entrances-滑动进出

说明
slideInUp向上滑动进入
slideInDown向下滑动进入
slideInLeft从左滑动进入
slideInRight从右滑动进入
slideOutUp向上滑动退出
slideOutDown向下滑动退出
slideOutLeft向左滑动退出
slideOutRight向右滑动退出

7.Attention seekers-引人注目的

说明
bounce弹跳
flash闪烁
pulse脉冲
rubberBand橡皮筋
shake左右弱晃动
swing上下摆动
tada缩放摆动
wobble左右强晃动
jello拉伸抖动

8.Lightspeed-光速

说明
lightSpeedIn光速出现
lightSpeedOut光速消失

9.Specials-特殊的

说明
hinge悬挂,颤抖,掉下去
rollIn从左侧旋转进入
rollOut向右侧旋转消失