过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用 Flash 动画或JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。
过渡动画:是从一个状态渐渐的过渡到另一个状态
可以让我们页面更好看,更动感十足,虽然 低版本浏览器不支持(ie9以下版本)但是不会影响页面布局。
我们现在经常和:hover一起搭配使用。
transition: 要过渡的属性 花费的时间 运动曲线 何时开始;
1、属性:想要变化的CSS属性, 宽度高度 背景颜色 内外边距都可以。如果想要所有的属性都变化过渡,写一个all 就可以。
2、花费时间:单位是 秒 (必须写单位) 比如0.5s
3、运动曲线:默认是ease (可以省略)
4、何时开始:单位是 秒 (必须写单位)可以设置延迟触发时间 默认是 0s (可以省略)
记住过渡的使用口诀:谁做过渡给谁加
举例:
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3过渡效果</title>
<style>
div {
width: 200px;
height: 100px;
background-color: pink;
}
div:hover {
width: 400px;
}
</style>
</head>
<body>
<div></div>
</body>
鼠标经过盒子时盒子会立马变宽
就会显得很突兀
此时就可以用过渡属性来设置的更好看些
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3过渡效果</title>
<style>
div {
width: 200px;
height: 100px;
background-color: pink;
/* transition: 变化的属性 花费的时间 运动曲线 何时开始 */
transition: width .5s;
}
div:hover {
width: 400px;
}
</style>
</head>
<body>
<div></div>
</body>
添加过渡属性后,鼠标再次经过盒子,盒子就会慢慢变宽
注意:
如果想要写多个属性,利用逗号进行分割
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3过渡效果</title>
<style>
div {
width: 200px;
height: 100px;
background-color: pink;
/* transition: 变化的属性 花费的时间 运动曲线 何时开始 */
/* transition: width .5s; */
/* 如果想要写多个属性,利用逗号进行分割 */
transition: width .5s, height .5s;
/* 或者:trasition: all .5s; */
}
div:hover {
width: 400px;
height: 200px;
}
</style>
</head>
<body>
<div></div>
</body>
小练习:
进度条
鼠标经过时进度条会慢慢拉满
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3过渡练习-进度条</title>
<style>
.bar {
width: 150px;
height: 15px;
border: 1px solid red;
border-radius: 7px;
padding: 1px;
}
.bar_in {
width: 50%;
height: 100%;
background-color: red;
border-radius: 7px;
/* 谁做过渡给谁加 */
transition: all .7s;
}
.bar:hover .bar_in {
width: 100%;
}
</style>
</head>
<body>
<div class="bar">
<div class="bar_in"></div>
</div>
</body>