Аккордеон на чистом CSS3
Дата публикации: 04.08.2011
Если ты в разработке делаешь упор на юзабилити, аккордеон — именно то решение, которое поможет тебе организовать контент. Основное преимущество аккордеона — возможность разместить большое количество контента на ограниченном пространстве. Возможно, потребуется полезный софт, обзоры IT и советы по обслуживанию ПК: посмотреть

Аккордеон
Хорошая новость: красивый и простой анимированный аккордеон можно реализовать на чистом CSS3, используя псевдокласс :target и переходы transition.
Плохая новость: кое-кого из майкрософтовских детищ опять придется обеспечить костылями. Но об этом в конце статьи.
Решение
Каждая секция аккордеона представлена тегом section (логично, правда?). Секция разделяется на заголовок и контент:
<div class="accordion">
<section id="one">
<h1><a href="#one">Heading 1</a></h1>
<div>
<p>content</p>
</div>
</section>
</div>
Привожу только часть CSS, отвечающую за работу аккордеона.
.accordion h1 + 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 h1 + div{
height: 100px;
}
Проверено в:
- IE 9
- Opera 10.5
- Firefox 3+
- Safari 4+
- Chrome
Внимание! Не работает в:
- IE 6-8
Кроссбраузерное решение на jQuery
Костыль для IE6-8 можно подобрать на свой вкус. В данном случае я не вижу необходимости учить эти браузеры псевдоклассу :target. Давай просто продублируем функционал — обеспечим разворот нужного блока контента.
И, конечно, не забудь подключить html5shiv, ведь мы использовали HTML5!
Проверено в:
- IE 6-9
- Opera 10.5
- Firefox 3+
- Safari 4+
- Chrome
Вывод
Это решение, как и практически все решения на чистом CSS3, к сожалению, работает не во всех браузерах. Но, все же «CSS3 + js костыль для IE», это лучше, чем «js для всех».
Посему имеем вполне жизнеспособный прием и вместе ждем отмирания старых браузеров.
