Сегодня вы узнаете, как создать довольно просто анимированный CSS3 аккордеон с помощью псевдокласса :target
Аккордеон может быть очень полезен тогда, когда вам нужно компактно представить некий контент сайта. Его основное преимущество заключается в возможности размещения большого количества контента в ограниченном пространстве.
Аккордеон проще показать, чем описать, так что давайте просто посмотрим, как это работает:
<div class="accordion"> <section id="one"> <h2><a href="#one">Заголовок 1</a></h2> <div> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent convallis est at metus feugiat ultricies.</p> </div> </section> <section id="two"> <h2><a href="#two">Заголовок 2</a></h2> <div> <p>Suspendisse arcu neque, lacinia id ultrices ut, condimentum non erat. Maecenas commodo auctor est, sit amet imperdiet erat hendrerit ut.</p> </div> </section> <section id="three"> <h2><a href="#three">Заголовок 3</a></h2> <div> <p>Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p> </div> </section> </div>
DIV с классом .accordion просто обертывает разделы, которые составляют содержание аккордеона. Каждый раздел section содержит название и, конечно, его содержание.
.accordion { background-color: #eee; border: 1px solid #ccc; padding: 10px; } .accordion section { border-bottom: 1px solid #ccc; margin: 5px; background-color: #fff; background-image: linear-gradient(top, #fff, #eee); border-radius: 5px; } .accordion h2 { margin: 0; } .accordion p { padding: 0 10px; } .accordion h2 a { display: block; position: relative; font-size: 1rem; font-weight: 600; padding: 10px; color: #333; border-radius: 5px; } .accordion h2 a:hover { background: #fff; } .accordion h2 + div { max-height: 0; overflow: hidden; transition: max-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 { max-height: 100px; }
Собственно, весь эффект построен на использовании и правильной стилизации псевдоэлемента :target. Еще один маленький момент – это конструирование "уголка" с помощью псевдоэлемента :after.
Одно маленькое замечание – для “схлопывания” неактивного элемента аккордеона мы использовали свойство max-height. Почему не height? Потому, что свойство height не анимируется (т.е. не обрабатывается свойством transition). Получилось немного нетипично, зато такой способ не потребовал утяжеления стилей или испольования сомнительных хаков.
© 2008 - 2025 Webmasters.BY Все права защищены
Новый комментарий