CSS3实现手风琴效果,我们需要用到一个新属性 :target(目标伪类选择器)
E:target 选择匹配E的所有元素,且匹配元素被相关URL指向
第一步 完成html布局
<div class="accordionMenu">
<div class="menuSection" id="brand">
<h2><a href="#brand">Brand</a></h2>
<p>Lorem ipsum dolor...</p>
</div>
<div class="menuSection" id="promotion">
<h2><a href="#promotion">Promotion</a></h2>
<p>Lorem ipsum dolor sit amet...</p>
</div>
<div class="menuSection" id="event">
<h2><a href="#event">Event</a></h2>
<p>Lorem ipsum dolor sit amet...</p>
</div>
</div>
效果如下 每个div内有一个标题和一个内容,标题内包含了一个a,a的链接指向那个ID
第二步,加上一些基础样式
.accordionMenu{
background: #fff;
color: #424242;
font: 12px Arial, Verdana,sans-serif;
margin: 0 auto;
padding: 10px;
width: 500px;
}
.accordionMenu h2{
margin: 5px 0;
padding: 0;
position: relative;
}
制作一个向下的三角形(上一篇有写如何绘制三角形)
.accordionMenu h2:before{
border: 5px solid #fff;
border-color: #fff transparent transparent;
content: "";
height: 0;
position: absolute;
right: 10px;
top: 15px;
width: 0;
}
给标题内容等添加一些样式
.accordionMenu h2 a{
background: #8f8f8f;
background: -moz-linear-gradient(top,#cecece,#8f8f8f);
background: -webkit-gradient(linear,left,top,left,bottom.from(#cecece),to(#8f8f8f));
background: -webkit-linear-gradient(top,#cecece,#8f8f8f);
background: linear-gradient(top,#cecece,#8f8f8f);
color: #424242;
display: block;
font-size: 13px;
margin: 0;
padding: 10px 10px;
text-shadow:2px 2px 2px #aeaeae;
text-decoration: none;
}
.accordionMenu p{
margin: 0;
height: 0; /*设置高度为0,隐藏内容*/
overflow: hidden;
padding: 0 10px;
-moz-transition:height 0.5s ease-in;
-webkit-transition:height 0.5s ease-in;
-o-transition:height 0.5s ease-in;
transition:height 0.5s ease-in;
}
这里transition 属性就相当于监听高度改变,改变了height 运动0.5s 以ease-in的方式
添加:target部分 实现点击展开的效果
.accordionMenu :target h2 a,
.accordionMenu h2 a:focus,
.accordionMenu h2 a:hover,
.accordionMenu h2 a:active{
background: #2288dd;
background: -moz-linear-gradient(top,#6bb2ff,#2288dd);
background: -webkit-gradient(linear,left,top,left,bottom.from(#6bb2ff),to(#2288dd));
background: -webkit-linear-gradient(top,#6bb2ff,#2288dd);
background: linear-gradient(top,#6bb2ff,#2288dd);
color: #fff;
}
.accordionMenu :target p{
height: 100px;
overflow: auto;
}
.accordionMenu :target h2:before{
border-color: transparent transparent transparent;
}
最后效果
大家可以去试试