animation-fill-mode

语法

  • animation-fill-mode:<single-animation-fill-mode>[,<single-animation-fill-mode>]*
  • <single-animation-fill-mode> = none | forwards | backwards | both
  • 默认值:none
  • 适用于:所有元素,包含伪对象:after和:before
  • 继承性:无
  • 动画性:否
  • 计算值:指定值
  • 媒体:视觉

取值

  • none:默认值。不设置对象动画之外的状态
  • forwards:设置对象状态为动画结束时的状态
  • backwards:设置对象状态为动画开始时的状态
  • both:设置对象状态为动画结束或开始的状态

说明

检索或设置对象动画时间之外的状态

  • 如果提供多个属性值,以逗号进行分隔。
  • 对应的脚本特性为animationFillMode。

兼容性

Values IE Firefox Chrome Safari Opera iOS Safari Android Browser Android Chrome
Basic Support 6.0-9.0 2.0-4.0 4.0-42.0-webkit- 6.0-8.0-webkit- 15.0-29.0-webkit- 6.0-8.4-webkit- 2.1-3.0-webkit- #1 18.0-42.0-webkit-
10.0+ 5.0-15.0-moz- 43.0+ 9.0+ 30.0+ 9.0+ 4.0-40.0-webkit-
16.0+
  • 在一些场景中会有错误行为
  • 部分浏览器不支持伪元素动画,或者支持得不够好,尽可能不要利用伪元素来做动画

示例


<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<style>
h1{font-size:16px;}
li{padding:10px;}
span{display:block;width:80px;height:80px;padding:10px;border-radius:50px;box-shadow:0 0 10px rgba(204,102,0,.8);background:#F6D66E;background:-moz-linear-gradient(top,#fff,#F6D66E);background:-webkit-linear-gradient(top,#fff,#F6D66E);background:linear-gradient(top,#fff,#F6D66E);}
.none span{
    -moz-animation:animations 1s ease;
    -webkit-animation:animations 1s ease;
    animation:animations 1s ease;
}
@-webkit-keyframes animations{
    0%{-webkit-transform:translate(0,0);}
    100%{-webkit-transform:translate(400px);}
}
@-moz-keyframes animations{
    0%{-moz-transform:translate(0,0);}
    100%{-moz-transform:translate(400px);}
}
@keyframes animations{
    0%{transform:translate(0,0);}
    100%{transform:translate(400px);}
}
.forwards span{
    -moz-animation:animations2 1s ease forwards;
    -webkit-animation:animations2 1s ease forwards;
    animation:animations2 1s ease forwards;
}
@-webkit-keyframes animations2{
    0%{-webkit-transform:translate(0,0);}
    100%{-webkit-transform:translate(400px);}
}
@-moz-keyframes animations2{
    0%{-moz-transform:translate(0,0);}
    100%{-moz-transform:translate(400px);}
}
@keyframes animations2{
    0%{transform:translate(0,0);}
    100%{transform:translate(400px);}
}
.backwards span{
    -moz-animation:animations3 1s ease backwards;
    -webkit-animation:animations3 1s ease backwards;
    animation:animations3 1s ease backwards;
}
@-webkit-keyframes animations3{
    0%{-webkit-transform:translate(0,0);}
    100%{-webkit-transform:translate(400px);}
}
@-moz-keyframes animations3{
    0%{-moz-transform:translate(0,0);}
    100%{-moz-transform:translate(400px);}
}
@keyframes animations3{
    0%{transform:translate(0,0);}
    100%{transform:translate(400px);}
}
.both span{
    -moz-animation:animations4 1s ease both;
    -webkit-animation:animations4 1s ease both;
    animation:animations4 1s ease both;
}
@-webkit-keyframes animations4{
    0%{-webkit-transform:translate(0,0);}
    100%{-webkit-transform:translate(400px);}
}
@-moz-keyframes animations4{
    0%{-moz-transform:translate(0,0);}
    100%{-moz-transform:translate(400px);}
}
@keyframes animations4{
    0%{transform:translate(0,0);}
    100%{transform:translate(400px);}
}
</style>
</head>
<body>
<h1>animation-fill-mode:</h1>
<ul>
    <li class="none">
        <strong>none: </strong>
        <span></span>
    </li>
    <li class="forwards">
        <strong>forwards: </strong>
        <span></span>
    </li>
    <li class="backwards">
        <strong>backwards: </strong>
        <span></span>
    </li>
    <li class="both">
        <strong>both: </strong>
        <span></span>
    </li>
</ul>
</body>
</html>