Аккордеон на CSS3
Аккордеон на CSS3
Так называемый аккордеон, или вариант раскрывающегося горизонтального или вертикального меню, очень популярный элемент при оформлении сайтов. Существует огромное количество вариантов реализации, с использованием скриптов, стилей и разных HTML-элементов в качестве управляющих конструкций. Представляю вам мой вариант аккордеона на чистом CSS3, но не удивлюсь, если такой вариант уже где-то был.
Эта статья в первую очередь предназначена для демонстрации работы с псевдоклассом :target, аккордеон выбран только в качестве удачного примера реализации. Итак, что же такое псевдокласс :target и чем он может быть нам полезен. Согласно спецификации, псевдокласс :target применяется к так называемому целевому элементу, то есть к элементу, ID которого совпадает с названием анкора в адресной строке браузера. Поясню на примере. Допустим, на странице example.html есть такой элемент:
Code (HTML) : Убрать нумерацию
- <h1 id="head1">Заголовок</h1>
Code (HTML) : Убрать нумерацию
- <style type="text/css">
- h1:target {
- color:#FF0000;
- }
- </style>
Code (HTML) : Убрать нумерацию
- <div>
- <div class="accord" id="page1">
- <a href="#page1">► Page 1</a>
- <div class="content">Content 1</div>
- </div>
- <div class="accord" id="page2">
- <a href="#page2">► Page 2</a>
- <div class="content">Content 2</div>
- </div>
- <div class="accord" id="page3">
- <a href="#page3">► Page 3</a>
- <div class="content">Content 3</div>
- </div>
- <div class="accord" id="page4">
- <a href="#page4">► Page 4</a>
- <div class="content">Content 4</div>
- </div>
- </div>
Code (HTML) : Убрать нумерацию
- /* блок является целевым элементом */
- div.accord:target .content {
- display: block;
- }
- /* блок не является целевым элементом */
- div.accord:not(:target) .content {
- display: none;
- }
Такой метод реализации аккордеона имеет очевидные плюсы. Главный, конечно, в том, что аккордеон работает вообще без единой строчки скриптов. Также хочу отметить удобство навигации и внутренней перелинковки: страницу можно открыть сразу на нужной вкладке, при этом в браузере сохраняется история просмотра. Метод кроссбраузерный, поддерживается как современными десктопными, так и мобильными веб-обозревателями. Имеются и недостатки. Браузер IE младше 9-й версии не поддерживает псевдокласс :target, тут придется или использовать скрипты, или сразу держать все блоки открытыми через подключение дополнительных стилей для IE. Для сохранения валидности HTML-кода, на странице не может быть несколько элементов с одинаковым ID, из-за этого всю структуру необходимо реализовывать внутри одного блока. Для какой-нибудь странички-FAQ это не проблема, но для сайта с более сложной структурой возможностей только одного CSS может не хватить.
Просмотров: 3040 | Комментариев: 4
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(19.10.2016 в 19:13):
Тут упор не на спецэффекты, а на использование :target. А так да, конечно можно добавить.
DiPrm
(19.10.2016 в 16:27):
Отличная гармонь получилась! Чтобы она еще и заиграла, можно добавить CSS3 эффектов типа transition для плавности переходов.
Ellephant
(19.10.2016 в 06:55):
плюсую
Добавить комментарий
Заполните форму для добавления комментария
a.openlink::before {content: "\25BA\0020";}
a.closelink::before {content: "\25BC\0020";}