Мобильное меню mmenu light
Это перевод документации к плагину mmenu light. Ссылка для скачивания на GitHub https://github.com/FrDH/mmenu-light
Документация
Приступая к работе
На этой странице документации предполагается, что у вас есть некоторые знания в области HTML, CSS и JavaScript. Если вы новичок в разработке интерфейсов, возможно, не стоит сразу переходить к фреймворку в качестве первого шага - изучите основы, а затем возвращайтесь!
Если вы новичок в использовании плагина mmenu light, пожалуйста, возьмите его копию и ознакомьтесь с руководством.
Создать меню
После запуска плагина для меню доступны два дополнения: navigation и offcanvas.
navigation() Создает навигацию с фиксированным Navbar и скользящим подменом из элементов <nav>, <ul>, <li> и <a> (или<span>). offcanvas() Создает ящик за пределами холста. Этот ящик может быть заполнен любым содержимым.
Обратите внимание, что оба дополнения могут иметь свой собственный набор опций, переменных CSS и методов API.
Опции
Плагин mmenu light, а также дополнения navigation и offcanvas предоставляют набор опций для настройки вашего меню. Значения по умолчанию можно переопределить, передав методу новые значения.
<script> document.addEventListener( "DOMContentLoaded", () => { const menu = new MmenuLight( document.querySelector( "#menu" ), "(max-width: 600px)" ); const navigator = menu.navigation({ // options }); const drawer = menu.offcanvas({ // options }); } ); </script>
Опции для плагина
Параметр |
Тип данных |
Значение по умолчанию |
Описание |
node |
HTMLElement |
null |
HTML-элемент, который вы хотите включить в меню вне холста. |
---|---|---|---|
mediaQuery |
String |
"all" |
Медиазапрос о том, что должно быть включено меню. |
Параметры дополнения navigation
Параметр |
Тип данных |
Значение по умолчанию |
Описание |
{ |
|||
selected |
String |
"Selected" |
Имя класса, которое будет использоваться для поиска выбранного <li>. |
---|---|---|---|
slidingSubmenus |
boolean |
true |
Следует ли использовать скользящие подменю (в IE11 должно быть введено значение false). |
title |
String |
"Menu" |
Заголовок над главной панелью. |
theme |
String |
"light" |
Используемая цветовая гамма. Возможные значения: "light" или "dark" |
} |
Опции для дополнения offcanvas
Параметр |
Тип данных |
Значение по умолчанию |
Описание |
{ |
|||
position |
String |
"left" |
Позиция для меню. Возможные значения: "left" или "right" |
---|---|---|---|
} |
Стиль
Изменить стиль плагина mmenu light довольно просто, просто переопределите некоторые значения и переменные CSS.
<style> .mm { background: #ffe; color: #330; --mm-spn-item-height: 46px; --mm-ocd-max-width: 500px; } </style>
CSS для дополнения navigation
Переменные |
Тип данных |
Значение по умолчанию |
Описание |
Значения |
|||
background-color |
color |
#f3f3f3 |
Фон - цвет для меню. |
---|---|---|---|
color |
color |
#444 |
Цвет текста и границ в меню. |
Переменные |
|||
--mm-spn-item-height |
pixels |
50px |
Высота для пунктов меню. |
--mm-spn-item-indent |
pixels |
20px |
Отступы для пунктов меню. |
--mm-spn-line-height |
pixels |
24px |
Высота строки для текста в меню. |
CSS для дополнения offcanvas
Переменные |
Тип данных |
Значение по умолчанию |
Описание |
Значения |
|||
top |
pixels |
0 |
Расположите его относительно верхней части страницы. |
---|---|---|---|
bottom |
pixels |
0 |
Расположите его относительно нижней части страницы. |
Переменные |
|||
--mm-ocd-width |
percentage |
80% |
Ширина меню. |
--mm-ocd-min-width |
pixels |
200px |
Минимальная ширина меню. |
--mm-ocd-max-width |
pixels |
440px |
Максимальная ширина меню. |
API
После вызова дополнений для каждого из них становится доступным API. С помощью этого API вы можете вызывать методы надстройки для управления плагином вручную.
<script> document.addEventListener( "DOMContentLoaded", () => { const menu = new MmenuLight( document.querySelector( "#menu" ) ); const navigator = menu.navigation(); const drawer = menu.offcanvas(); navigator.openPanel( document.querySelector( "#ul" ); ); document.querySelector( 'a[href="#menu"]' ) .addEventListener( 'click', ( evnt ) => { evnt.preventDefault(); drawer.open(); }); } ); </script>
Методы API для дополнения navigation
Метод( аргументы ) |
Тип данных |
Значение по умолчанию |
Описание |
openPanel |
Вызовите этот метод, чтобы открыть панель в меню. |
||
---|---|---|---|
( |
|||
panel |
HTMLElement |
null |
Панель (UL) для открытия. |
) |
Методы API для дополнения offcanvas
Метод( аргументы ) |
Тип данных |
Значение по умолчанию |
Описание |
open |
Вызовите этот метод, чтобы открыть меню. |
||
---|---|---|---|
close |
Вызовите этот метод, чтобы закрыть меню. |
Руководство
Вступление
В этом руководстве мы создадим облегченное мобильное меню с помощью плагина mmenu light. Просто следуйте инструкциям шаг за шагом, и оно будет готово к работе в кратчайшие сроки.
Давайте начнем с создания html-файла и добавим некоторую базовую разметку для заголовка и содержимого. Для этого урока мы будем предполагать, что у вас уже есть таблица стилей (называемая my-styles.css) для оформления этой разметки.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" /> <title>My webpage</title> <link href="/path/to/styles.css" rel="stylesheet" /> </head> <body> <div id="page"> <div id="header"></div> <div id="content"> <h1>Page title</h1> <p>Some content.</p> </div> </div> </body> </html>
Затем добавьте файлы mmenu .js и .css. Чаще всего файлы .css расположены в <head>, а файлы .js расположены перед закрывающим <body>.
<!DOCTYPE html> <html> <head> ... <link href="/path/to/mmenu-light.css" rel="stylesheet" /> </head> <body> ... <script src="/path/to/mmenu-light.js"></script> </body> </html>
Меню
Теперь, когда мы настроили наш html-файл и добавили разметку для заголовка и содержимого, давайте добавим меню. В этом уроке мы добавим наше меню в заголовок.
Не важно, где в разметке расположено меню, плагин mmenu light добавляет меню к <body>, когда оно включено, и возвращает его на прежнее место, когда отключено.
С помощью плагина mmenu light меню должно состоять из элементов <nav>, <ul>, <li> и <a> (или <span>). Вы можете добавить подменю, просто добавив <ul> (с элементами <li> и <a>) в <li>.
<body> <div id="page"> <div id="header"> <nav id="menu"> <ul> <li><a href="/">Home</a></li> <li><a href="/about/">About us</a> <ul> <li><a href="/about/history/">History</a></li> <li><a href="/about/team/">The team</a></li> <li><a href="/about/address/">Our address</a></li> </ul> </li> <li><a href="/contact/">Contact</a></li> </ul> </nav> </div> <div id="content"> ... </div> </div> </body>
Обратите внимание на идентификатор "menu" в <nav>, мы будем использовать его позже, чтобы нацелиться на меню при запуске плагина.
Открытие подменю
Плагин предполагает, что каждое <a> в меню должно быть кликабельным, поэтому он добавляет якорь, чтобы открыть подменю рядом с <a>. Если на нашем веб-сайте нет главной страницы для раздела « About us», мы можем заменить <a href="/about/"> на <span>. Таким образом, якорь для открытия подменю заполнит весь <li>.
<nav id="menu"> <ul> ... <li><span>About us</span> <ul> ... </ul> </li> ... </ul> </nav>
Запуск плагина
Теперь, когда мы создали html-файл, включили все необходимые css и js-файлы и настроили разметку для страницы и меню, мы можем запустить плагин. Чаще всего вы пишете JavaScript в отдельном js-файле, но в этом руководстве мы напишем его в виде встроенного <script>.
Давайте создадим экземпляр плагина mmenu light и снабдим его элементом меню. Помните идентификатор "menu" в <nav>? Теперь мы используем его для настройки меню.
Кроме того, мы сообщаем плагину, когда меню должно быть включено, указав медиа-запрос во втором аргументе. В этом руководстве мы хотим, чтобы меню отображалось и функционировало как мобильное меню вне холста только в том случае, если ширина окна составляет менее 600 пикселей.
<script> const menu = new MmenuLight( document.querySelector( "#menu" ), "(max-width: 600px)" ); </script>
Для функциональности навигации (стилизованные представления списков, фиксированная панель навигации и скользящие подменю) нам необходимо активировать дополнение navigation.
<script> const navigator = menu.navigation({ // options }); </script>
Для работы вне холста нам необходимо активировать дополнение offcanvas.
<script> const drawer = menu.offcanvas({ // options }); </script>
Как навигационные, так и оффлайн дополнения предоставляют набор собственных опций. Ознакомьтесь с документацией для получения дополнительной информации о параметрах.
Открыть меню
Теперь, когда мы настроили наше меню, нам нужно иметь возможность открыть его, щелкнув по привязке. Итак, давайте добавим символ <a> в наш заголовок и привяжем к нему слушатель событий для открытия меню.
<body> <div id="page"> <div id="header"> <a href="#menu">Open the menu</a> <nav id="menu"> ... </nav> </div> ... </div> ... <script> document.addEventListener( "DOMContentLoaded", () => { ... document.querySelector( "a[href='#menu']" ) .addEventListener( "click", ( event ) => { event.preventDefault(); drawer.open(); }); } ); </script> </body>
Закрыть меню
По умолчанию меню автоматически закрывается после нажатия на все еще видимую часть страницы. Вызовите метод close, чтобы закрыть меню вручную.
<script> drawer.close(); </script>
Для получения полного обзора всех методов ознакомьтесь с документацией.
Результат
Теперь у вас есть html-файл, который выглядит примерно так.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" /> <title>My webpage</title> <link href="/path/to/styles.css" rel="stylesheet" /> <link href="/path/to/mmenu-light.css" rel="stylesheet" /> </head> <body> <div id="page"> <div id="header"> <a href="#menu">Open the menu</a> <nav id="menu"> <ul> <li class="Selected"><a href="/">Home</a></li> <li><span>About us</span> <ul> <li><a href="/about/history/">History</a></li> <li><a href="/about/team/">The team</a></li> <li><a href="/about/address/">Our address</a></li> </ul> </li> <li><a href="/contact/">Contact</a></li> </ul> </nav> </div> <div id="content"> <h1>The title</h1> <p>Some content.</p> </div> </div> <script src="/path/to/mmenu-light.js"></script> <script> document.addEventListener( "DOMContentLoaded", () => { const menu = new MmenuLight( document.querySelector( "#menu" ), "(max-width: 600px)" ); const navigator = menu.navigation(); const drawer = menu.offcanvas(); document.querySelector( "a[href='#menu']" ) .addEventListener( "click", ( evnt ) => { evnt.preventDefault(); drawer.open(); }); } ); </script> </body> </html>