css的animation
animation
是一个综合属性,是animation-name
, animation-duration
, animation-timing-function
, animation-delay
, animation-iteration-count
, animation-direction
, animation-fill-mode
, animation-play-state
, and animation-timeline
这些属性的简写
不过在使用的时候,只有animation-name
和animation-duration
是必须的
例如:
animation:testkeyframe 3s
我们也可以做更多的设置
例如:
animation:testkeyframe 3s linear 1s infinite
//对应的属性
//animation:
//testkeframe关键帧名字
//3s动画持续时间
//linear动画时间曲线
//1s动画在多少时间之后开始执行
//infinite动画循环次数
其中关键帧名字是对@keyframes
的引用
@keyframes testkeyframe{0%{}50%{}100%{}
}
注意事项:
@keyframes中改变的属性必须是
调用关键帧的元素
里面已有的属性比如调用关键帧的那个元素已有了
transform:translateX(100px)
这样才能在@keyframe中不同阶段进行调整
示例:
html
<div class="container"><div class="testEl"></div> </div>
css
.container{position: relative;margin: 50px auto;width: 500px;height: 500px;border-radius: 5px;box-shadow: 1px 1px 10px 5px #d5d5d5;}.testEl{position:absolute;top: 20px;left: 20px;width: 100px;height: 100px;background-color: #aff;transform: translateX(0px); //元素本身已有的属性,才能实现动画效果animation: testAn 3s linear infinite 1s;}@keyframes testAn {0%{transform: translateX(0px);}50%{transform: translateX(20px);}100%{transform: translateX(0px);}}
此外还需要注意的是:
animation
属性的值animation-duration
和animation-delay
必须严格顺序:
name
→duration
→delay
其他的内容可以自由搭配,不过都需要在
name
的后面按照正确的顺序,才能正常解析成我们所需的动画效果
animation:testkeyframe 3s linear 1s infinite //这里的3s就是animation-duration //这里的1s就是animation-delay