Преобразуем аккордеон на jQuery в аккордеон на CSS3
Приходилось ли вам использовать аккордеон в своем проекте? Обычно, для таких задач используется какой-нибудь плагин jQuery или вариант на чистом JavaScript. Назначение аккордеона - демонстрация изображений или списка свойств и особенностей продукта. В таком случае можно легко обойтись только возможностями CSS3? которые позволят обрабатывать событие OnClick и построить анимацию для смены слайдов.
Версия jQuery
Первая демонстрация нашего урока содержит аккордеон, построенный на плагине jQuery liteAccordion:
<!DOCTYPE HTML> <html lang="ru"> <head> <meta charset="utf-8" /> <title>Преобразуем аккордеон jQuery в аккордеон CSS3 | Материалы сайта RUSELLER.COM</title> <!-- Файлы CSS --> <link href="/css/layout.css" rel="stylesheet" /> <link href="/css/liteaccordion.css" rel="stylesheet" /> <!-- jQuery --> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <!-- jQuery easing --> <script src="/js/jquery.easing.1.3.js"></script> <!-- Бибилиотека liteAccordion для jQuery --> <script src="/js/liteaccordion.jquery.js"></script> <script> $(document).ready(function(){ $('#js_version').liteAccordion({ theme : 'dark', rounded : true, enumerateSlides : true, firstSlide : 1, linkable : true, easing: 'easeInOutSine' }); }); </script> </head> <body> <header> <h2>Преобразуем аккордеон jQuery в аккордеон CSS3</h2> </header> <h1>Аккордеон jQuery (с использованием liteAccordion)</h1> <div id="js_version" class="accordion"> <ol> <li data-slide-name="slide1"> <h2><span>Слайд Один</span></h2> <div> <img src="/images/1.jpg" alt="Slide One" /> </div> </li> <li data-slide-name="slide2"> <h2><span>Слайд Два</span></h2> <div> <img src="/images/2.jpg" alt="Slide Two" /> </div> </li> <li data-slide-name="slide3"> <h2><span>Слайд Три</span></h2> <div> <img src="/images/3.jpg" alt="Slide Three" /> </div> </li> <li data-slide-name="slide4"> <h2><span>Слайд Четыре</span></h2> <div> <img src="/images/4.jpg" width="768" alt="Slide Four" /> </div> </li> <li data-slide-name="slide5"> <h2><span>Слайд Пять</span></h2> <div> <img src="/images/5.jpg" alt="Slide Five" /> </div> </li> </ol> <noscript> <p>Для работы приложения требуется JavaScript</p> </noscript> </div> <a href="/index2.html#slide1"><h2>Версия аккордеона на CSS3</h2></a> </body> </html>
В заголовке добавляются все необходимые библиотеки и стили (jQuery, jquery.easing и liteAccordion), а также инициализация плагина. А в теле документа представлена структура аккордеона (упорядоченный список) со слайдами. Типовая структура для аккордеонов.
Аккордеон на CSS3
Теперь построим аккордеон на CSS3. Для начала удалим весь код JavaScript и файл стилей liteaccordion.css. Подготовим собственные стили для нашего проекта. Также добавим ссылки в заголовки слайдов, чтобы получить возможность переключать слайды. в результате изменений структура документа станет следующей:
<!DOCTYPE HTML> <html lang="ru"> <head> <meta charset="utf-8" /> <title>Преобразуем аккордеон jQuery в аккордеон на CSS3 | Материалы сайта RUSELLER.COM</title> <!-- Файлы CSS --> <link href="/css/layout.css" rel="stylesheet" /> <link href="/css/main.css" rel="stylesheet" /> </head> <body> <header> <h2>Преобразуем аккордеон jQuery в аккордеон на CSS3</h2> </header> <h1>Версия на CSS3</h1> <div class="accordion css3accordion"> <span id="slide1"></span> <span id="slide2"></span> <span id="slide3"></span> <span id="slide4"></span> <span id="slide5"></span> <ol> <li class="slide1"> <a href="#slide1"><h2><span>Слайд Один</span></h2></a> <div> <img src="/images/1.jpg" alt="Слайд Один" /> </div> </li> <li class="slide2"> <a href="#slide2"><h2><span>Слайд Два</span></h2></a> <div> <img src="/images/2.jpg" alt="Слайд Два" /> </div> </li> <li class="slide3"> <a href="#slide3"><h2><span>Слайд Три</span></h2></a> <div> <img src="/images/3.jpg" alt="Слайд Три" /> </div> </li> <li class="slide4"> <a href="#slide4"><h2><span>Слайд Четыре</span></h2></a> <div> <img src="/images/4.jpg" alt="Слайд Четыре" /> </div> </li> <li class="slide5"> <a href="#slide5"><h2><span>Слайд Пять</span></h2></a> <div> <img src="/images/5.jpg" alt="Слайд Пять" /> </div> </li> </ol> </div> <a href="/index3.html"><h2>Версия аккордеона на CSS3 с автоматическим проигрыванием</h2></a> </body> </html>
Также добавим несколько элементов span
. По умолчанию они будут скрыты, но мы будем использовать их для обработки события Onclick. Теперь создадим стили для аккордеона CSS3 - сначала для внешнего контейнера и внутренних элементов span
:
/* Аккордеон CSS3 */ .css3accordion { border: 9px solid #353535; border-radius: 6px; padding: 5px 5px 6px 0; background: #030303; height: 320px; width: 960px; /* Тени CSS3 */ -webkit-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5); -moz-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5); -ms-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5); -o-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5); box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5); } /* Скрываем первый уровень */ .css3accordion > span { display: none }
И затем определяем стили для остальных элементов:
/* Основные стили и слайды аккордеона */ .css3accordion ol { height: 100%; list-style: none; overflow: hidden; position: relative; } .css3accordion li { float: left; height: 100%; overflow: hidden; position: relative; width: 48px; /* Переходы CSS3 для слайдов */ -webkit-transition: all 0.9s ease-in-out; -moz-transition: all 0.9s ease-in-out; -ms-transition: all 0.9s ease-in-out; -o-transition: all 0.9s ease-in-out; transition: all 0.9s ease-in-out; } .css3accordion li a { display: block; float: left; height: 320px; position: relative; width: 48px; } /* Заголовки слайдов */ .css3accordion h2 { font-size: 16px; font-weight: normal; height: 48px; left: 0; line-height: 265%; margin: 0; position: absolute; top: 0; width: 320px; z-index: 1; -webkit-backface-visibility: hidden; -webkit-transform: translateX(-100%) rotate(-90deg); -webkit-transform-origin: right top; -moz-transform: translateX(-100%) rotate(-90deg); -moz-transform-origin: right top; -ms-transform: translateX(-100%) rotate(-90deg); -ms-transform-origin: right top; -o-transform: translateX(-100%) rotate(-90deg); -o-transform-origin: right top; transform: translateX(-100%) rotate(-90deg); transform-origin: right top; } .css3accordion h2 span { background-color: #353535; border-radius: 4px; color: #fff; display: block; margin-top: 5px; padding-right: 10%; text-align: right; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; } .css3accordion h2 span:hover { background-color: #353535; background: -webkit-gradient(linear, left top, right top, color-stop(0%,#353535), color-stop(100%,#555555)); background: -webkit-linear-gradient(left, #353535 0%,#555555 100%); background: -moz-linear-gradient(left, #353535 0%, #555555 100%); background: -ms-linear-gradient(left, #353535 0%,#555555 100%); background: -o-linear-gradient(left, #353535 0%,#555555 100%); background: linear-gradient(left, #353535 0%,#555555 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#353535', endColorstr='#555555',GradientType=1 ); } /* Внутреннее содержание слайда */ .css3accordion li div { margin-left: 5px; padding-left: 48px; }
Теперь разберемся, как выводить счетчик слайдов в каждом заголовке. Для решения будем использовать элемент :after
:
/* Объект-счетчика */ .css3accordion h2 span:after { color: #080808; font-weight: bold; left: 10%; position: absolute; text-shadow: -1px 1px 0 #555555; top: 10%; /* Вращение CSS3 для счетчика */ -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -ms-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); } /* Значения счетчика */ li.slide1 h2 span:after { content: "1"; } li.slide2 h2 span:after { content: "2"; } li.slide3 h2 span:after { content: "3"; } li.slide4 h2 span:after { content: "4"; } li.slide5 h2 span:after { content: "5"; }
И в завершении реализуем обработку события Onclick:
/* Действия по нажатию кнопки мыши */ #slide1:target ~ ol li.slide1, #slide2:target ~ ol li.slide2, #slide3:target ~ ol li.slide3, #slide4:target ~ ol li.slide4, #slide5:target ~ ol li.slide5 { width: 768px; } #slide1:target ~ ol li.slide1 span, #slide2:target ~ ol li.slide2 span, #slide3:target ~ ol li.slide3 span, #slide4:target ~ ol li.slide4 span, #slide5:target ~ ol li.slide5 span { background: #353535; background: -webkit-gradient(linear, left top, right top, color-stop(0%,#353535), color-stop(100%,#555555)); background: -webkit-linear-gradient(left, #353535 0%,#555555 100%); background: -moz-linear-gradient(left, #353535 0%, #555555 100%); background: -ms-linear-gradient(left, #353535 0%,#555555 100%); background: -o-linear-gradient(left, #353535 0%,#555555 100%); background: linear-gradient(left, #353535 0%,#555555 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#353535', endColorstr='#555555',GradientType=1 ); }
Автоматическое проигрывание
Для реализации автоматического проигрывания отключим обработку события Onclick и изменим анимацию:
/* Автоматическая анимация */ .css3accordion li { -webkit-animation-name: anim_slides; -webkit-animation-duration: 25.0s; -webkit-animation-timing-function: ease-in-out; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: normal; -webkit-animation-delay: 0; -webkit-animation-play-state: running; -webkit-animation-fill-mode: forwards; -moz-animation-name: anim_slides; -moz-animation-duration: 25.0s; -moz-animation-timing-function: ease-in-out; -moz-animation-iteration-count: infinite; -moz-animation-direction: normal; -moz-animation-delay: 0; -moz-animation-play-state: running; -moz-animation-fill-mode: forwards; } .css3accordion li:nth-child(2) { -webkit-animation-delay: 5.0s; -moz-animation-delay: 5.0s; } .css3accordion li:nth-child(3) { -webkit-animation-delay: 10.0s; -moz-animation-delay: 10.0s; } .css3accordion li:nth-child(4) { -webkit-animation-delay: 15.0s; -moz-animation-delay: 15.0s; } .css3accordion li:nth-child(5) { -webkit-animation-delay: 20.0s; -moz-animation-delay: 20.0s; } @-webkit-keyframes anim_slides { 0% { width: 48px; } 20% { width: 768px; } 40% { width: 48px; } 100% { width: 48px; } } @-moz-keyframes anim_slides { 0% { width: 48px; } 20% { width: 768px; } 40% { width: 48px; } 100% { width: 48px; } }
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/PcoQDwDp7wk/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Всегда храни верность своему начальнику - следующий, может быть еще хуже... |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.