过渡(transition)
通过过渡可以指定一个属性发生变化时的切换方式
通过过渡可以创建一些非常好的效果,提升用户的体验
transition-property
transition-property: 指定要执行过渡的属性
多个属性间使用 , 隔开
如果所有属性都需要过渡,则使用 all 关键字,all 是 默认值
大部分属性都支持过渡效果,注意过渡时必须是从一个有效数值向另外一个有效数值进行过渡
transition: width, margin;
transition: all;
transition-duration
transition-duration: 指定过渡持续的时间
时间单位:s 和 ms
1s = 1000ms
transition-duration: 500ms;
transition-duration: .5s;
transition-timing-function
transition-timing-function: 过渡的时序函数
指定过渡的执行的方式
可选值:
-
ease 默认值,慢速开始,加速,慢速结束
-
linear 线性,匀速运动
-
ease-in 慢速开始,加速到结束
-
ease-out 加速开始,慢速结束
-
ease-in-out 先加速后减速,和 ease 和细微差别
-
cubic-bezier() 贝塞尔曲线函数
-
steps() 分步执行过渡效果
第一个值为 步数可以设置第二个值:
end , 在时间结束时执行过渡(默认值)
start , 在时间开始时执行过渡
transition-delay
transition-delay: 延迟时间
过渡效果的延迟,等待一段时间后在执行过渡
transition
transition:
可以同时设置过渡相关的所有属性,只有一个要求,如果要写延迟,则两个时间中第一个是持续时间,第二个是延迟。省略的属性都采用默认值。
.box2{
background-color: #bfa;
transition: margin-left 2s 1s cubic-bezier(.24,.95,.82,-0.88);
}
.box3{
background-color: orange;
transition-property: all;
transition-timing-function: linear;
transition-duration: 2s;
transition-delay: 1s;
}
效果
米兔 练习
用过度效果对上面的雪碧图实现动画效果
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>米兔</title>
<style>
.mitu {
132px;
height: 271px;
margin: 100px auto;
background-image: url("https://gitee.com/Liwker/picture/raw/master/img/20210106145912.png");
background-position: 0 0;
background-repeat: repeat-x;
/* 通过过度设置动画 */
transition-property: background-position;
transition-duration: 3s;
/* 每3(n-1)步为一个周 */
transition-timing-function: steps(15 ,end);
}
.mitu:hover {
/* 对图片经过计算,一个周需要移动 -396px */
background-position: -1980px 0;
}
</style>
</head>
<body>
<div class="mitu"></div>
</body>
</html>
效果