欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

css3 动画

程序员文章站 2022-03-16 17:46:46
...

一、transition(过渡)

其作用是平滑的改变css的值,无论是点击、焦点、hover事件,只要css的值改变了,就是平滑的,就是动画;

1、兼容性

  • IE10 及以上支持;
  • Safari 和 Chrome25 及以前的版本需要前缀 -webkit-;
  • Firefox4 及以前版本需要前缀 -moz-;

2、写法

  • 要添加过渡的 css 属性;
  • 规定效果时长;
  • 若给多个属性添加过渡效果,可用逗号隔开多个属性;
div {
  transition: width 2s;
  -moz-transition: width 2s;
  -webkit-transition: width 2s;
  width: 100px;
}
div:hover {
  width: 300px;
}

若无规定时长,则没有过渡效果,默认为0;

3、过渡属性

  • transition:简写,一次性设置多个过渡属性;
  • transition-property:规定应用过渡的属性名称;
  • transition-duration:定义过渡动画持续时间,默认 0s;
  • transition-delay:指定延迟过渡时间,默认是0s;
  • transition-timing-function:定义过渡效果时间曲线,默认 'ease';
    • linear:匀速;
      相当于:cubic-bezier(0, 0, 1, 1) / cubic-bezier(1, 1, 0, 0)
    • ease:慢速开始,变快,慢速结束;
      相当于:cubic-bezier(.25, .1, .25, 1)
    • ease-in:慢速开始,变快;
      相当于:cubic-bezier(.42, 0, 1, 1)
    • ease-out:正常开始,慢速结束;
      相当于:cubic-bezier(0, 0, .58, 1)
    • ease-in-out:规定以慢速开始和结束的过渡效果;
      相当于:cubic-bezier(.42, 0, .58, 1)
    • cubic-bezier(x1,y1,x2,y2):自定义三次贝塞尔曲线,x 值是 0-1 之间的数,y 值任意;
      三次贝塞尔曲线默认 P0(0, 0) 和 P3(1, 1),中间的 P1 和 P2 拉扯则自定义;

二、animation(动画)

1、兼容性

  • IE10 及以上;
  • Safari 和 Chrome 需要前缀 -webkit-;
  • Firefox 需要前缀 -moz-;

2、@keyframes 规则

  • 用于创建动画逐渐变化的规则;
  • 可改变任意多样式,任意多次数;
  • 用百分比规定变化进度,或者关键字「from」和「to」;
    from=0%,to=100%;

3、animation 动画属性

写法

  • 在选择器内定义动画属性;
  • 需定义绑定的 @keyframes 动画规则名称;
  • 需定义动画时长,若无定义时长则无动画效果,默认值0;
    属性
  • animation:简写,规定除了 animation-play-state 之外的所有属性;
  • animation-name:规定 @keyframes 动画名称;
  • animation-duration:规定动画完成一个周期所花费的时间,默认 0s;
  • animation-timing-function:规定动画的速度曲线,默认是 'ease';
    规则和上面过渡的一样;
  • animation-delay:规定动画何时开始,默认 0s;
  • animation-iteration-count:规定动画被播放的次数,默认是 1;
    • n:定义播放次数;
    • infinite:无限次播放;
  • animation-direction:规定动画是否在下一周期逆向播放, 默认是 'normal';
    • normal:下一周期正常播放;
    • alternate:轮流反向播放;
  • animation-play-state:规定动画是否正在运行或暂停,默认是 'running';
    • paused:规定动画已暂停;
      -running:规定动画正在播放;
  • animation-fill-mode:规定动画时间之外的状态;
    • none:不改变默认行为;
    • forwards:当动画完成之后保持最后一个属性值;
    • backwards:在动画开始之前的时间应用第一个属性值;
    • both:forwards 和 backwards 都被应用;
@keyframes first
{
    0% { background: red; }
    25% { background: yellow; }
    50% { background: blue; }
    75% { background: green; }
    100% { background: black; }
}

@-moz-keyframes first           /* Firefox */
{
    0% { background: red; }
    25% { background: yellow; }
    50% { background: blue; }
    75% { background: green; }
    100% { background: black; }
}

@-webkit-keyframes first        /* Safari & Chrome */
{
    0% { background: red; }
    25% { background: yellow; }
    50% { background: blue; }
    75% { background: green; }
    100% { background: black; }
}

.firstAn {
    animation: first 5s linear 1s 1 normal forwards;
    -moz-animation: first 5s linear 1s 1 normal forwards;
    -webkit-animation: first 5s linear 1s 1 normal forwards;
    
    &:hover {
        animation-play-state: paused;
        -moz-animation-play-state: paused;
        -webkit-animation-play-state: paused;
    }
}