Октябрь 25, 2019 Запись была обновлена
Время чтения: < 1 мин.
Прочитать позже
Создание выдвигающегося меню
Сегодня мы создадим боковое меню, похожее на то, что в смартфонах. Но это меню будет у вас на сайте.
Пример меню можно увидеть здесь:
Посмотреть примерСкачать
Подключение jQuery
Первым делом подключаем библиотеку. Скачать ее можно — здесь.
1 | <script type="text/javascript" src="js/jquery.js"></script> |
HTML часть
Сейчас добавим меню в виде списка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <div class="container"> <div id="sidebar"> <ul> <li><a href="#">Главная</a></li> <li><a href="#">Статьи</a></li> <li><a href="#">Видео</a></li> <li><a href="#">Выход</a></li> </ul> </div> <div class="main-content"> <div class="swipe-area"></div> <a href="#" data-toggle=".container" id="sidebar-toggle"> <span class="bar"></span> <span class="bar"></span> <span class="bar"></span> </a> <div class="content"> <!-- Произвольный контент --> </div> </div> </div> |
CSS часть
CSS кода немного, а эффект получается очень красивым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #sidebar { background: #DF314D; position: absolute; width: 240px; height: 100%; left: -240px; box-sizing: border-box; -moz-box-sizing: border-box; } #sidebar ul { margin: 0; padding: 0; list-style: none; } #sidebar ul li { margin: 0; } #sidebar ul li a { padding: 15px 20px; font-size: 16px; font-weight: 100; color: white; text-decoration: none; display: block; border-bottom: 1px solid #C9223D; -webkit-transition: background 0.3s ease-in-out; -moz-transition: background 0.3s ease-in-out; -ms-transition: background 0.3s ease-in-out; -o-transition: background 0.3s ease-in-out; transition: background 0.3s ease-in-out; } #sidebar ul li:hover a { background: #C9223D; } .main-content #sidebar-toggle { background: #DF314D; border-radius: 3px; display: block; position: relative; padding: 10px 7px; float: left; } .main-content #sidebar-toggle .bar { display: block; width: 18px; margin-bottom: 3px; height: 2px; background-color: #fff; border-radius: 1px; } .main-content #sidebar-toggle .bar:last-child { margin-bottom: 0; } |
Javascript часть
И допишем небольшой код на JS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <script type="text/javascript"> $(window).load(function(){ $("[data-toggle]").click(function() { var toggle_el = $(this).data("toggle"); $(toggle_el).toggleClass("open-sidebar"); }); $(".swipe-area").swipe({ swipeStatus:function(event, phase, direction, distance, duration, fingers) { if (phase=="move" && direction =="right") { $(".container").addClass("open-sidebar"); return false; } if (phase=="move" && direction =="left") { $(".container").removeClass("open-sidebar"); return false; } } }); }); </script> |
Итак, вот мы и создали выезжающее меню. Данное меню прилично сэкономит вам место на сайте, при его использовании.
Успехов!
Источник: onextrapixel.com
Спасибо за ваше обращение!
Мы свяжемся с вами в течение 2-х часов (график работы: пн-пт, с 10 до 19)
В самом эффекте выдвижения ничего нового для себя не нашел, а вот за задержку подсветки при наведении — большое спасибо, об этом CSS-параметре я раньше не знал. Уже к себе в блог его вкрутил, очень красиво, IMO, получилось.
Юрий,возможно ли вместо меню ссылок туда поставить например рекламный баннер?
Конечно. Но ведь его не будут тогда видеть)
Подскажите пожалуйста, каким образом можно сделать чтоб меню это было постоянно на сайте открыто, чтоб убрать кнопку открывание/закрывания и открыть его раз и навсегда. Как?
Роман, дело в том, что при «выезжании» этого меню, весь контент смещается вправо. Поэтому, если сделать его фиксированным открытым, то часть сайта не будет видно.
ясно
не работает джава скрипт, ругается на .swipe-area, и в html коде у вас не написано ничего про .swipe-area
Исправил.
Когда выдвигается сайдбар, то весь блок с контентом не сужается, а просто сдвигается, и текст уходит вправо за пределы экрана. Win 8×64, Google Chrome
Всё верно.
Ну так это же не нормально ❓
Почему? Ведь полоса прокрутки снизу не появляется.
Ну, так а где вы видели, чтобы такое было в приложениях или на сайтах? Я такого нигде не видел. Да, правая часть сужалась, но информация вся оставалась на экране, либо меню открывалось поверх правого контента
Я видел такое меню на sitehere.ru в примерах 😉 .
P. S. Вы всегда можете изменить меню на своё усмотрение.
а как запихнуть в это меню левый сайдбар в drupal7 ?
1. Найти файл шаблона темы, который отвечает за сайдбар.
2. Вставить HTML код в него.
3. Вставить CSS стили в файл стилей темы.
4. Подключить в футере скрипты.
что конкретно оборачивать не пойму 3 день бодаюсь с движком
проблема решилась но как теперь избавиться от дублирования заголовков меню
Здравствуйте, я столкнулся с такой проблемой. Я сделал все как нужно, но вот у меня длинная страница и скролл страницы вниз не работает. Помогите пожалуйста
Здравствуйте, Антон!
Обратите внимание на файл CSS. Первой строчкой там идем свойство для body:
Оно и скрывает скроллы.
Если убрать overflow:hidden — при открывании меню появляется горизонтальная прокрутка. А если контента много — при прокручивании вниз панель остается висящей "в воздухе".
Подскажите, как сделать выезд меню справа?
Здравствуйте, Дмитрий!
Вам необходимо изменить соответствующие стили CSS. В скрипте меняются только классы, поэтому необходимо переместить меню вправо, а затем прописать, опять же, в стилях то, чтобы основной контент уезжал влево.
Каким образом можно прикрутить к WordPress? У меня мультисайт на WordPress
Добрый день, Егор!
Вам необходимо это меню «встроить» в вашу тему, которую вы используете на сайте (или сайтах). Также понадобятся знания Walker Class, чтобы изменять меню, как вы захотите и добавлять классы.
Есть тестовый сайт, можете на нем поставить свой код, с этой страницы? Напишите мне на почту дам доступ