somboy 2019-11-06
共同点
animation动画与transition过渡都可以实现动画效果,拥有下面共同的属性
animation:mymove 2s linear infinite alternate; transition: width 1s ease-out;
1、动画名称(name)@key-frame
2、过渡时间(duration)规定动画完成一个周期所花费的秒或毫秒。默认是 0。
3、延迟时间(delay)规定动画何时开始。
4、时间函数(timing-function)规定动画的速度曲线,默认是 "ease"。
| 值 | 描述 |
|---|---|
| linear | 动画从头到尾的速度是相同的。 |
| ease | 默认。动画以低速开始,然后加快,在结束前变慢。 |
| ease-in | 动画以低速开始。 |
| ease-out | 动画以低速结束。 |
| ease-in-out | 动画以低速开始和结束。 |
| cubic-bezier(n,n,n,n) | 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。 |
区别
animation动画比transition过渡多了下面的属性。
1、播放次数(iteration-count)
animation:mymove 2s linear infinite;
参数:
n:表示播放n次
infinite:无限播放
2、播放方向(direction)
animation:mymove 2s linear 1 alternate;
参数:
normal:默认值。动画应该正常播放。
alternate:动画先正后反播放。
reverse:动画反向播放。
3、动画时间外的状态(fill-mode)
animation-fill-mode : none | forwards | backwards | both;
| 值 | 描述 |
|---|---|
| none | 不改变默认行为。 |
| forwards | 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。 |
| backwards | 在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。 |
| both | 向前和向后填充模式都被应用 |
4、是否暂停(play-state)
animation-play-state: paused|running;
另外animation解决了transition与display不兼容的bug。
相关代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.demo1{
width:100px;
height: 100px;
background: #608CF8;
transition: transform 1s ease-out;
}
.demo1:hover{
transform: rotate(90deg);
}
.demo2{
width:200px;
height:200px;
background: #849320;
}
.demo2:hover{
animation:mymove 2s linear infinite alternate;
}
@keyframes mymove{
100%{
transform:translateX(200px)
}
}
</style>
</head>
<body>
<div class="demo1">transition</div>
<div class="demo2">animation</div>
</body>
</html> <!DOCTYPE html><html lang="en"><head>. width: 300px;height: 400px;background-color: #333;margin: 0 a
<!DOCTYPE html><html lang="en"><head>. background-color: black;margin: 0 auto;margin-top: 200px;widt