过渡
动画和过渡的区别
- 动画和过渡类似,都是可以实现一些动态的效果;
- 不同的是过渡需要在某个事件来触发,而动画可以自动触发动态效果;
- 设置动画效果,必须先要设置一个关键帧(
@keyframes
),关键帧设置了动画执行每一个步骤。
过渡的概率
过渡是元素从一种样式逐渐改变为另一种的效果。
作用
- 可以指定一个属性发生变化时的切换方式;
- 可以创建一些非常好的效果,提升用户的体验。
过渡的连写方式
指定过渡属性
transition-property
指定要执行过渡的属性。
none
:没有属性获得过渡all
:给所有属性都设置上过渡property
:定义多个过渡效果的 CSS 属性名称列表,列表以逗号分隔
比如:transition-property: all;
transition-property: height , width;
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
/* transition-property: all; */
/* 两种方式效果一样 */
transition-property: width, height;
}
div:hover {
width: 200px;
height: 200px;
}
</style>
<body>
<div></div>
</body>
过渡持续时间
transition-duration
设置过渡效果的执行时间,也就是过渡完成一个周期所花费的时间。
时间单位可以选择s
或者ms
(1s = 1000ms
),时间越长,过渡的动画效果就会越慢。
比如:transition-duration: 4s;
transition-duration: 100ms, 2s;
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
transition-property: all;
transition-duration: 2s;
}
div:hover {
width: 200px;
height: 200px;
}
</style>
<body>
<div></div>
</body>
过渡的速度曲线
transition-timing-function
设置过渡切换效果的速度。
可以设置的值:
ease
:先加速在减速,默认ease-in
:加速ease-out
:减速ease-in-out
:以低速开始和结束linear
:匀速steps(int,start|end)
:间隔数量 (步长)int
:间隔数,是一个正整数(大于 0)start
:可选,动画的第一帧会被立即执行,直接从第二帧开始,然后以第一帧结束end
:可选,从第一帧开始到正常结束,默认
cubic-bezier(n,n,n,n)
:设置自己想要的值,值可以是从 0 到 1 的数值steps(int,start|end)
:间隔数量 (步长)int
:间隔数,是一个正整数(大于 0)start
:可选,在时间开始时执行过渡end
:可选,在时间结束时执行过渡,默认
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
transition-property: all;
transition-duration: 2s;
/* transition-timing-function: steps(2, start); */
transition-timing-function: steps(2);
}
div:hover {
width: 200px;
height: 200px;
}
</style>
<body>
<div></div>
</body>
steps(2,start)效果
steps(2)效果
过渡的延迟
animation-delay
设置过渡什么时候开始,也就是延迟时间是多久 。 (默认是0)
比如:transition-delay: 2s;
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
transition-property: all;
transition-duration: 2s;
transition-timing-function: steps(2);
transition-delay: 2s;
}
div:hover {
width: 200px;
height: 200px;
}
</style>
<body>
<div></div>
</body>
过渡的简写方式
transition
可以同时设置过渡相关的所有属性,多个过渡效果用,
分隔。
注意
:如果既有持续时间,也有延迟时间,则 第一个 是 持续时间
,第二个 是 延迟时间
。
语法
:transition:要过渡的属性 持续时间 速度曲线 延迟时间;
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
transition: all 2s steps(2) 2s;
}
div:hover {
width: 200px;
height: 200px;
}
</style>
<body>
<div></div>
</body>
兼容
在IE9及以下不兼容
-moz-
: 支持 Firefox 更早的版本-webkit-
: 支持 Chrome 和 Safari 更早版本-o-
:支持 Opera 更早的版本