CSS3过渡
概念:在CSS3中,我们可以使用transition属性将元素的某一个属性从“一个属性值”在指定的时间内平滑地过渡到“另一个属性值”,从而实现动画效果。
CSS3变形(transform)呈现的仅仅是一个结果,而CSS过渡(transition)呈现的是一个过程。这个所谓的过程,通俗来说就是一种动画变化过程,如渐渐显示,渐渐隐藏,动画快慢等
语法:
transition:过渡属性 过渡时间 过渡方式 延迟时间;
实例:指定单个属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>过渡</title>
<style>
*{
padding:0;
margin:0;
}
div{
display:inline-block;
padding:5px 10px;
margin:20px;
text-align:center;
border-radius:20px;
background-color:rgba(138,199,83,0.6);
cursor:pointer;
transition:background-color 0.3s linear 0s;
}
.a:hover{
background-color:rgba(144,83,199,0.4);
}
</style>
</head>
<body>
<div class="a">按钮</div>
</body>
</html>
运行结果
实例:指定多个属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
padding:0;
margin:0;
}
div{
width:50px;
display:inline-block;
padding:5px 10px;
margin:20px;
text-align:center;
background-color:rgba(138,199,83,0.6);
cursor:pointer;
transition:background-color 1s linear 0s,color 0.3s ease 0s,border-radius 0.5s linear 0s;
}
.a:hover{
color:white;
background-color:rgba(144,83,199,0.4);
border-radius:20px;
}
</style>
</head>
<body>
<div class="a">按钮</div>
</body>
</html>
运行结果
实例:指定全部属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>过渡</title>
<style>
*{
padding:0;
margin:0;
}
div{
width:50px;
display:inline-block;
padding:5px 10px;
margin:20px;
text-align:center;
background-color:rgba(138,199,83,0.6);
cursor:pointer;
transition:all 0.3s linear 0s;
}
.a:hover{
background-color:rgba(144,83,199,0.4);
width:100px;
border-radius:20px;
}
</style>
</head>
<body>
<div class="a">按钮</div>
</body>
</html>
运行结果
说明:凡是涉及CSS3过渡,我们都是结合:hover伪类来实现过渡效果的
transition是一个复合属性,主要包括4个子属性。
属性 | 说明 |
---|---|
transition-property | 对元素的哪一个属性进行操作 |
transition-duration | 过渡的持续时间 |
transition-timing-function | 过渡的速率变化方式 |
transition-delay | 过渡的延迟时间(可选参数) |
在"实例:指定单个属性"中,属性值
/*transition复合属性*/
transition:background-color 0.3s linear 0s;
/*transition子属性*/
transition-property:background-color;
transition-duration:0.3s;
transition-timing-function:linear;
transition-delay:0s
这两者代码是等价的
过渡属性:transition-property
概念:在CSS3中,可以使用transition-property属性定义过渡效果操作的是哪一个属性.
当指定的CSS属性的值发生改变时,过渡效果才开始
语法:
transition:property:none | all | property;
属性值
属性值 | 说明 |
---|---|
none | 没有属性应用过渡效果 |
all | 默认值,所有属性都应用过渡效果 |
property | 应用过渡效果的属性名称列表,多个属性间以逗号分隔 |
过渡时间:transition-duration
概念:在CSS3中,transition-duration属性用于指定过渡效果持续的时间
语法:
transition-duration:time;
属性值
属性值 | 说明 |
---|---|
time | 完成过渡效果所需要的时间(以秒或毫秒记)。默认值为0,表示不出现过渡动画。可以指定多个时长,每个时长会被应用到由transition-property指定的对应属性上。如果指定的时长个数小于属性个数,那么时长列表会重复。如果时长列表更长,那么该列表会被裁剪。两种情况下,属性列表都保持不变 |
过渡方式:transition-timing-function
概念:在CSS3中,transition-timing-function属性用于指定过渡效果执行时速度变化的时间曲线
语法
transition-timing-function:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(n,n,n,n);
属性值
属性值 | 说明 | 速率 |
---|---|---|
linear | 规定以相同速度开始至结束的过渡效果,即”匀速“ | |
ease | 默认值,规定慢速开始,变快之后慢速结束的过渡效果 | |
ease-in | 规定速度越来越快的过渡效果 | |
ease-out | 规定速度越来越慢的过渡效果 | |
ease-in-out | 规定以慢速开始和结束的过渡效果 | |
cubic-bezier(n.n,n,n) | 在cubic-bezier函数中自定义值,参数是0~1的数值 |
延迟时间:transition-delay
概念:在CSS3中,transition-delay属性用于指定执行过渡效果之前需要等待的时间
语法:
transition-delay:time;
属性值
属性值 | 说明 |
---|---|
time | 定义过渡效果属性执行之前所需要等待的时间(以秒或毫秒计)。该属性值可以为正整数、负整数或0。默认值为0,即不延迟。当取值为正整数时,过渡效果会延迟触发。当取值为负整数时,过渡效果会从该时间点开始,之前的效果会被截断。 |
实例:导航下拉列表
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>导航菜单</title>
<style>
*{
padding:0;
margin:0;
}
a{
text-decoration:none;
}
.nav{
width:150px;
height:50px;
background-color:rgb(83,199,86);
margin:20px auto;
line-height:50px;
text-align:center;
}
.list{
list-style: none;
height:0;
overflow:hidden;
/* 指定应用过渡效果的属性为height */
transition-property:height;
/* 指定过渡效果持续时间为1s */
transition-duration:1s;
/* 指定过渡效果速度变化 */
transition-timing-function:linear;
/* 指定过渡效果延迟执行 */
transition-delay:0s;
}
.list li{
background-color:lightblue;
border-bottom:1px solid red;
list-style:none;
}
.nav:hover .list{
/* 当鼠标移入导航菜单盒子时,下拉列表的高度发生变化 */
height:240px;
}
</style>
</head>
<body>
<div class='nav'>
<a href="">中国新四大发明</a>
<ul class="list">
<li><a href="">高速铁路</a></li>
<li><a href="">扫码支付</a></li>
<li><a href="">共享单车</a></li>
<li><a href="">网络购物</a></li>
</ul>
</div>
</body>
</html>
运行结果