Сегодня мы научимся, как создать довольно простой анимированные аккордеон с помощью класса CSS3 :target.
Что такое аккордеон
Если вы разрабатываете с юзабилити, то аккордеон может быть очень полезен, особенно при организации содержания. Основное преимущество заключается в упаковке контента и економии пространства.
HTML5
Будем использовать новый HTML5 элемент section При использовании новых элементов HTML5, как этот, для старых браузеров, вам необходимо использовать следующий трюк:
<script>document.createElement('section');</script>
Для простоты здесь я просто использовал де-факто скрипт для включения HTML5 элементов в Internet Explorer, так называемый html5shiv.
<!--[if lt IE 9]> <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->
Разметки
Давайте посмотрим, как это работает:
<div class="accordion"> <section id="one"> <h2><a href="#one">Heading 1</a></h2> <div> <p>content</p> </div> </section> </div>
- Каждая секция содержит название и конечно, его содержание.
CSS
section {
display: block;
}
.accordion {
background-color: #eee;
border: 1px solid #ccc;
width: 600px;
padding: 10px;
margin: 50px auto;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-moz-box-shadow: 0 1px 0 #999;
-webkit-box-shadow: 0 1px 0 #999;
box-shadow: 0 1px 0 #999;
}
.accordion section {
border-bottom: 1px solid #ccc;
margin: 5px;
background-color: #fff;
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));
background-image: -webkit-linear-gradient(top, #fff, #eee);
background-image: -moz-linear-gradient(top, #fff, #eee);
background-image: -ms-linear-gradient(top, #fff, #eee);
background-image: -o-linear-gradient(top, #fff, #eee);
background-image: linear-gradient(top, #fff, #eee);
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
.accordion h2,
.accordion p {
margin: 0;
}
.accordion p {
padding: 10px;
}
.accordion h2 a {
display: block;
position: relative;
font: 14px/1 'Trebuchet MS', 'Lucida Sans';
padding: 10px;
color: #333;
text-decoration: none;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
.accordion h2 a:hover {
background: #fff;
}
.accordion h2 + div {
height: 0;
overflow: hidden;
-moz-transition: height 0.3s ease-in-out;
-webkit-transition: height 0.3s ease-in-out;
-o-transition: height 0.3s ease-in-out;
transition: height 0.3s ease-in-out;
}
.accordion :target h2 a:after {
content: '';
position: absolute;
right: 10px;
top: 50%;
margin-top: -3px;
border-top: 5px solid #333;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}
.accordion :target h2 + div {
height: 100px;
Поддержка браузеров
Если вы хотите использовать это для ваших проектов, вы должны знать, что старые версии браузеров не поддерживают класс :target.
