滑动手风琴样式:
HTML代码:
<div class="container">
<header>
<h1>HTML+CSS:滑动手风琴</h1>
</header>
<ul class="accordion">
<li class="tab">
<div class="social youtube">
<a href="#" >Youtube</a>
</div>
<div class="content">
<h1>Youtube</h1>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Neque, voluptates?</p>
</div>
</li>
<li class="tab">
<div class="social twitter">
<a href="#" >Twitter</a>
</div>
<div class="content">
<h1>Twitter</h1>
<p>Lorem ipsum, dolor sit amet elit. Neque, voluptates?</p>
</div>
</li>
<li class="tab">
<div class="social facebook">
<a href="#" >Facebook</a>
</div>
<div class="content">
<h1>Facebook</h1>
<p>Lorem ipsum, dolor sit amet consectetur adque, voluptates?</p>
</div>
</li>
<li class="tab">
<div class="social linkedin">
<a href="#" >Linkedin</a>
</div>
<div class="content">
<h1>Linkedin</h1>
<p>Lorem met consectetur adipisicing elit. Neque, voluptates?</p>
</div>
</li>
<li class="tab">
<div class="social instagram">
<a href="#" >Instagram</a>
</div>
<div class="content">
<h1>Instagram</h1>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Neque, voluptates?</p>
</div>
</li>
<li class="tab">
<div class="social github">
<a href="#" >Github</a>
</div>
<div class="content">
<h1>Github</h1>
<p>Lorem ipsum, dolor sit amet ates?</p>
</div>
</li>
</ul>
</div>
css代码:
/* reset */
*{
margin: 0;
padding: 0;
border: 0;
}
body{
background-color: #222;
font-family: Arial, Helvetica, sans-serif;
}
.container{
margin: 50px auto;
width: 90%;
}
header h1{
color: #fff;
margin-bottom: 10px;
text-align: center; /*文本居中*/
}
.accordion{
background-color: #333;
width: 100px;
min-width: 860px;
display: block;
list-style: none;/*去除列表的点*/
overflow: hidden;
height: 200px;
font-size: 0;
}
.tab{
display: inline-block;/*将li设置为行内块元素,使其可设置宽高*/
background-color: #444;
border-right: #333 1px solid;
width: 80px;
height: 200px;
overflow: hidden;
position: relative;
margin: 0px;
transition: all 0.5s ease-in-out 0.1s;/*加入过渡*/
}
/*设置鼠标移入效果*/
.tab:hover{
width: 450px;
}
.tab:hover .social a::before{
margin-left: -100px;
}
.tab:hover .social a::after{
margin-left: -5px;
}
.tab .content{
background-color: #fff;
width: 360px;
height: 200px;
margin-left: 80px;
padding: 50px 0px 0px 15px;
position: relative;
}
.tab .content h1{
font-size: 2.5rem;
margin-bottom: 10px;
}
.tab .content p{
font-size: 0.85rem;
line-height: 1.4rem;
padding-right: 30px;
}
.social a::before,
.social a::after{
width: 80px;
height: 200px;
position: absolute;
text-indent: 0;
padding-top: 90px;
padding-left: 25px;
display: block;
font: normal 30px Genericons;
color: #fff;
transition: all 0.4s ease-in-out 0.1s;
}
.social a::after{
font-size: 48px;
padding-left: 20px;
padding-top: 80px;
margin-left: 85px;
}
.youtube a::before,
.youtube a::after{
content: '\f213';
}
.youtube a::after{
background-color: #ff0000;
}
.twitter a::before,
.twitter a::after{
content: '\f202';
}
.twitter a::after{
background-color: #6dc5dd;
}
.facebook a::before,
.facebook a::after{
content: '\f204';
}
.facebook a::after{
background-color: #3b5998;
}
.linkedin a::before,
.linkedin a::after{
content: '\f208';
}
.linkedin a::after{
background-color: #00a9cd;
}
.instagram a::before,
.instagram a::after{
content: '\f215';
}
.instagram a::after{
background-color: #6dc993;
}
.github a::before,
.github a::after{
content: '\f200';
}
.github a::after{
background-color: #6e5494;
}
/* media queries */
@media(max-width: 950px){
.container{
width: 70%;
}
.tab{
display: block;
width: 100%;
border-bottom: 3px #333 solid;
}
.accordion{
display: block;
height: auto;
min-width: 450px;
}
.tab .content{
width: 85%;
}
.tab:hover{
width: 100%;
}
}
@media(max-width:680px){
.container{
width: 95%;
}
.accordion{
width: 100%;
min-width: 350px;/* 最小宽度值*/
}
}
注意事项:
1.text-align: center;
用于设置文本居中
2.list-style: none;
去除无序列表的点
3.设置水平列表时,用inline-block
来代替inline
4.transition
设置过渡
5.min-width
设置最小宽度
存在的问题:
在显示最后一个列表时,如果出现列表闪烁,无法达到鼠标移入时列表自动展开的效果。很大一部分原因时在设置整体宽度时min-width
的值较小,导致最后一个显示时宽度不够。如出现此类情况,可重新设置整体宽度的min-width
。