Аккордеон в стиле Metro
В данном уроке мы сделаем аккордеон в стиле Metro. Меню будет использовать jQuery и jQueryUI.
Разметка HTML
Структура меню достаточно простая. Мы используем только элементы ul
и li
для построения аккордеона и тег ссылки после каждого элемента li
первого уровня.
Также мы установили класс .close
для каждого элемента ul
первого уровня, а также используем тег i
для установки иконки для каждой категории. В конце импортируется минимизированные варианты jQuery и jQueryUI, а также наш скрипт.
<ul> <li> <a href="#"><i></i>Друзья</a> <ul class="closed"> <li>Петя Мешкофф</li> <li>Инна Выкрутасова</li> <li>Моня Фельдман</li> <li>Иван Балан</li> <li>Грицько Забейкопыто</li> <li>Марио Итальянцев</li> </ul> </li> <li> <a href="#"><i></i>Видео</a> <ul class="closed"> <li>Рай</li> <li>Время пришло</li> <li>Оторвусь!</li> <li>Зажигаем!</li> <li>Первый раз...</li> <li>Мимоходом</li> <li>Баллады коричневых куч</li> <li>Как молоды мы были</li> </ul> </li> <li> <a href="#"><i></i>Галерии</a> <ul class="closed"> <li>Манга</li> <li>Аниме</li> <li>Скайрим</li> </ul> </li> <li> <a href="#"><i></i>Подкасты</a> <ul class="closed"> <li>То, что нужно знать</li> <li>За пределами</li> <li>Глупости</li> <li>Текила</li> </ul> </li> <li> <a href="#"><i></i>Супер</a> <ul class="closed"> <li>Супер_1</li> <li>Супер_2</li> <li>Последний супер</li> </ul> </li> </ul> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> <script src="/js/functions.js"></script>
CSS
Большинство строк использует оператор >
. Например, когда встречается такой код body > ul > li
, то он означает элемент li
, который является потомком элемента ul,
являющегося потомком элемента body
.
Мы импортируем шрифт Didact Gothic из коллекции Google Fonts.
Для указания категорий используется метод nth-child(*) для установки соответствующих иконок ( body > ul > li:nth-child(*) > a > i).
Для подсчета элементов используются счетчики CSS.
Также у нас есть два класса: .active
и .closed
. Данные классы используются для реализации функционала аккордеона. Класс .active
формирует цвет фона активной категории, а класс .closed
помогает организовать открытие и закрытие категорий. Высота устанавливается равной 0px, что сворачивает панель во время закрытия.
@import url(http://fonts.googleapis.com/css?family=Didact+Gothic&subset=latin,cyrillic); body{ max-width: 240px; margin: 100px auto 50px auto; background: #1f1f1f; text-align: center; } ul{ list-style:none; margin:0; padding:0; text-align:left; font-family: Helvetica; } body > ul{ margin-bottom:200px; border:1px solid #222; } body > ul > li{ position:relative; } body > ul > li > a{ display:block; outline:0; height:20px; padding:10px; text-decoration:none; color:#fff; background:#ea2d49; border-bottom:1px solid #222; font-family:'Didact Gothic'; font-weight:300; -webkit-font-smoothing:antialiased; text-transform:uppercase; font-size:14px; } body > ul > li > a > i{ display:block; width:45px; height:30px; float:left; } body > ul > li:nth-child(1) > a > i{ background:url(http://web-gate.fr/images/republicof3/icon_friend.png)no-repeat top left; -webkit-background-size:50%; -moz-background-size:50%; -o-background-size:50%; background-size:50%; background-position:5px 3px; } body > ul > li:nth-child(2) > a > i{ background:url(http://web-gate.fr/images/republicof3/icon_video.png)no-repeat top left; -webkit-background-size:45%; -moz-background-size:45%; -o-background-size:45%; background-size:45%; background-position:5px 3px; } body > ul > li:nth-child(3) > a > i{ background:url(http://web-gate.fr/images/republicof3/icon_gallery.png)no-repeat top left; -webkit-background-size:45%; -moz-background-size:45%; -o-background-size:45%; background-size:45%; background-position:5px 3px; } body > ul > li:nth-child(4) > a > i{ background:url(http://web-gate.fr/images/republicof3/icon_podcast.png)no-repeat top left; -webkit-background-size:45%; -moz-background-size:45%; -o-background-size:45%; background-size:45%; background-position:5px 3px; } body > ul > li:nth-child(5) > a > i{ background:url(http://web-gate.fr/images/republicof3/icon_bolt.png)no-repeat top left; -webkit-background-size:25%; -moz-background-size:25%; -o-background-size:25%; background-size:25%; background-position:10px 0px; } body > ul > li > ul{ counter-reset:items; height:auto; overflow:hidden; background:#fff; color:#ec2b48; width:100%; } body > ul > li > ul > li{ counter-increment:items; padding:1em 1.3em; border-bottom:1px solid #DDD; font-size:12px; cursor:pointer; } body > ul > li > ul > li:hover{ background:#f4F4F4; } body > ul > li:after{ content:counter(items); font-size:14px; position:absolute; right:10px; top:15px; background:#c0273c; height:30px; padding:5px 20px; margin:-15px -10px; color:white; text-indent:0; text-align:center; line-height:2; -webkit-box-shadow:inset 4px 0 8px rgba(); -moz-box-shadow:inset 4px 0 8px rgba(); box-shadow:inset 4px 0 8px rgba(); } body > ul > li > ul > li:after{ content:counter(items); font-size:0.857em; background:#f4f5f4; height:100%; margin:-27px 174px; display:block; float:left; color:#c0273c; text-indent:0; text-align:center; font-size:14px; line-height:2.5; border-top:1px solid #DDD; height:38px; width:48px; } .active{ background:#c0273c; } .closed{ height:0; }
JavaScript
JavaScript реализует весь функционал нашего аккордеона.
У нас есть функция, которая при нажатии на тег a
добавляет к нему класс .toggleClass()
, за чем следует установка цвета фона с задержкой _this.toggleClass('active', 5);
.
Затем мы удаляем класс .close
, чтобы открыть панель с задержкой. А остальные панели закрываем.
$(function() { $("a").bind('click',function() { var _this = $(this); // Раскрываем текущую ссылку _this.toggleClass('active', 5); _this.next().toggleClass('closed', 500); // Проходим по другим ссылкам и выключаем активное состояние $("a").not(_this).each(function() { $(this).next().addClass('closed', 500); $(this).removeClass('active', 5); }); }); });
Готово!
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/b3DGZyanvu4/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
- 2024-04-22 » Цифровой маркетинг: инструменты для продвижения и рекламы в 2024 году
- 2024-04-22 » Что такое CSS-модули и зачем они нам?
- 2024-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
Неудача — это не единичное внезапное событие. Ваш провал не возникает внезапно. Напротив, неудача появляется, когда вы совершаете одни и те же ошибки изо дня в день. Джим Рон |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.