以前大多数情况下,我们都是使用JavaScript或jQuery来实现手风琴效果的。事实上,我们还可以使用CSS3来实现,这种方式相对来说更为简单。
实现代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
#box
{
width:300px;
height:50px;
overflow:hidden;
}
/*定义item公共样式*/
.item
{
float:left;
width:20%;
height:100%;
transition:all 0.5s;
}
/*定义item单独样式*/
.item:nth-child(1) {width:40%;background-color: red;}
.item:nth-child(2) {background-color: orange;}
.item:nth-child(3) {background-color: yellow;}
.item:nth-child(4) {background-color: green;}
/*关键代码*/
#box:hover div
{
width:20%;
}
#box div:hover
{
width:40%;
}
</style>
</head>
<body>
<div id="box">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</body>
</html>
浏览器预览效果如下图所示。
分析:
在一开始,我们定义第1个子元素宽度为40%,其他3个子元素宽度为20%,总宽度刚好为100%。
/*关键代码*/
#box:hover div
{
width:20%;
}
#box div:hover
{
width:40%;
}
“#box:hover div{width:20%;}”
表示当鼠标经过父元素时,将每一个子元素的宽度定义为20%。既然鼠标经过父元素,那肯定会经过某一个子元素,“#box div:hover{width:40%;}”表示将鼠标经过的“当前子元素”的宽度定义为40%,这样就实现了手风琴效果。
上面这段代码是实现手风琴效果最关键的代码,也非常有技巧性,小伙伴们一定要琢磨清楚。