animation 与 transition 的区别
作为移动端开发,css3 动画是基本功之一,在工作中难免遇到动画相关,那就必须先得搞懂 animation 和 transition 的区别
- animation 的属性
- animation-name keyframe 的名称
- animation-duration 完成 keyframe 的花时间 单位是秒
- animation-timing-function 动画的曲线 有 linear ease ease-in ease-out ease-in-out cubic-bezier(n,n,n,n)
- animation-delay keyframe 执行前的延迟时间
- animation-iteration-count 动画执行的次数 n 与 infinite(无限循环)
- animation-direction 是否轮流播放动画 normal 与 alternate(0-1-1-0 式播放)
- animation-fill-mode forwards 停留在结束状态 backwards 让动画回到第一帧的状态 both 设置动画结束时的状态,以结束时动画的状态优先
- transition 的属性
- transition-property 在哪个 css 属性变化时执行 transition
- transition-duration 执行 transition 的时长 单位秒
- transition-timing-function 动画的曲线 linear ease ease-in ease-out ease-in-out cubic-bezier(n,n,n,n)
- transition-delay 延迟多长后时间执行 单位秒
- transition 与 animation 的区别
- transition
- 需要事件触发,比如点击时添加一个有 transition 的 class
- 一次性的,只执行一次,除非写一个多少秒执行的 setInterval
- 只能定义开始和结束状态
- 只能设计一个属性变化
- 用户的最终状态停留在有 transition 的 class
- disiplay:none 到 display:block 不会产生动画效果
- animation
- 不需要事件触发
- 可以多次执行或者循环执行
- 可以定义多帧的状态
- 可以设置多个属性状态变化
- 可以设定停止在哪个状态
- transition
- 片段代码
.box {
width: 100px;
height: 100px;
background: #555;
-webkit-animation: fly 1s linear 1s 3 alternate both;
}
@-webkit-keyframes fly {
0% {
-webkit-transform: translateX(0);
}
50% {
-webkit-transform: translateX(40px);
}
100% {
-webkit-transform: translateX(100px);
}
}
#box2 {
width: 100px;
height: 100px;
background: #555;
}
.fadeOut {
opacity: 0;
transition: opacity 1s ease;
}
<div class="box" id="box"></div>
<div id="box2"></div>
<script>
document.getElementById('box').onclick = function() {
document.getElementById('box2').className = 'fadeOut'
}
</script>
确认评论邮箱
邀请制评论