Пока я творю, я живу!
Блог посвящен: HTML, CSS, PHP, Wordpress, Bootstrap
Всем привет!
Продолжаем изучать основы «bootstrap3».
В сегодняшнем уроке вы научитесь создавать горизонтальное меню для веб-страницы.
В предыдущих уроках вы научились создавать списки и выпадающие списки. По сути, списки можно использовать как меню, но в bootstrap есть специальные классы для создания меню.
Благодаря этим классам можно быстро, красиво, а главное, адаптивно создать меню для сайта и вы в этом сейчас сами убедитесь.
Вот так выглядит меню на компьютерах:
…а вот так на мобильных устройствах. Все элементы меню прячутся и остается только кнопка. При нажатии на кнопку появляется меню выпадающим списком:
При нажатии справа на кнопку меню, откроется выпадающий список:
Теперь сам код, а потом разберем классы, которые можно менять.
<nav class="navbar navbar-default" role="navigation"> <div class="container-fluid"> <!-- Название компании и кнопка, которая отображается для мобильных устройств группируются для лучшего отображения при сужении --> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span><!--Полоски на кнопке--> <span class="icon-bar"></span><!--Полоски на кнопке--> <span class="icon-bar"></span><!--Полоски на кнопке--> </button> <a class="navbar-brand" href="#">Brand</a> </div> <!-- Группируем ссылки, формы, выпадающее меню и прочие элементы --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown 1<b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li class="divider"></li> <li><a href="#">Separated link</a></li> <li class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> </ul> <form class="navbar-form navbar-left" role="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="Search"> </div> <button type="submit" class="btn btn-default">Submit</button> </form> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link 3</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown 2<b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>
Сейчас меню резиновое, так как используется класс «container-fluid» (строка №2):
<div class="container-fluid">
Если вместо класса «container-fluid» прописать класс «container», тогда меню не будет растягиваться на всю ширину экрана, а примет ширину класса «container». О классе «container» можно почитать тут.
А вот эта часть кода отвечает за название организации (строка №11). Сюда можно смело вставлять название сайта, логотип. Также в этой части кода есть кнопка, которая появляется на мобильных устройствах (строки №5 - №10):
<div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span><!--Полоски на кнопке--> <span class="icon-bar"></span><!--Полоски на кнопке--> <span class="icon-bar"></span><!--Полоски на кнопке--> </button> <a class="navbar-brand" href="#">Brand</a> </div>
Дальше идет список меню.
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown 1<b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li class="divider"></li> <li><a href="#">Separated link</a></li> <li class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> </ul> <form class="navbar-form navbar-left" role="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="Search"> </div> <button type="submit" class="btn btn-default">Submit</button> </form> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link 3</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown 2<b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </li> </ul> </div><!-- /.navbar-collapse -->
Хочу обратить ваше внимание на строку №5:
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
и строку №15:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
Если id этих двух строк будет совпадать, то кнопка выпадающего меню будет работать в мобильных версиях. На примере это «bs-example-navbar-collapse-1».
Теперь само меню с ссылками:
<ul class="nav navbar-nav"> <li class="active"><a href="#">Link</a></li> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li class="divider"></li> <li><a href="#">Separated link</a></li> <li class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> </ul>
Я думаю, что такое ссылка и как она создается – объяснять не нужно. Но, если кто не знает, вам сюда.
Строка № 17 – для выделения активного меню, используется класс «active»:
<li class="active"><a href="#">Link</a></li>
Строка №21 – чтобы список выпадал в мобильной версии, во вложенный список ul нужно добавить класс «dropdown-menu»:
<li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a><!--Каретка--> <ul class="dropdown-menu"><!--Вложенный список, который будет выпадать--> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li class="divider"></li><!--Разделительная линия--> <li><a href="#">Separated link</a></li> <li class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li>
Для того чтобы зафиксировать меню сверху, нужно добавить класс «navbar-fixed-top» (Строка №1):
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
Для того чтобы зафиксировать меню снизу, нужно добавить класс «navbar-fixed-bottom» (Строка №1):
<nav class="navbar navbar-default navbar-fixed-bottom" role="navigation">
Фух , вроде все!
Теперь поделюсь с вами несколькими кодами готовых менюшек. Исследуйте и рассмотрите что и как в них расположено, а если захотите, то можете использовать их для ваших проектов.
Удачи, жду на следующих уроках.
А теперь готовое решение для меню на Bootstrap3:
Меню постоянно будет находиться в верхней либо в нижней части экрана. При прокрутке страницы меню будет всегда на виду и занимать исходное положение.
Нужно добавить дополнительный класс «navbar-fixed-top» для прикрепления меню сверху или «navbar-fixed-bottom» для прикрепления меню снизу к основным классам меню «navbar» и «navbar-default».
Навигационное меню, прикрепленное к верхней части страницы
Класс «navbar-fixed-top»
<nav role="navigation" class="navbar navbar-default navbar-fixed-top"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" data-target="#navbarCollapse" data-toggle="collapse" class="navbar-toggle"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="#" class="navbar-brand">Бренд</a> </div> <!-- Collection of nav links and other content for toggling --> <div id="navbarCollapse" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Главная</a></li> <li><a href="#">Статьи</a></li> <li><a href="#">Новости</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Войти</a></li> </ul> </div> </div> </nav>
Навигационное меню, прикрепленное к нижней части страницы
Класс «navbar-fixed-bottom»
<nav role="navigation" class="navbar navbar-default navbar-fixed-bottom"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" data-target="#navbarCollapse" data-toggle="collapse" class="navbar-toggle"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="#" class="navbar-brand">Бренд</a> </div> <!-- Collection of nav links and other content for toggling --> <div id="navbarCollapse" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Главная</a></li> <li><a href="#">Статьи</a></li> <li><a href="#">Новости</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Войти</a></li> </ul> </div> </div> </nav>
Обычное меню
<nav role="navigation" class="navbar navbar-default"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" data-target="#navbarCollapse" data-toggle="collapse" class="navbar-toggle"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="#" class="navbar-brand">Бренд</a> </div> <!-- Collection of nav links, forms, and other content for toggling --> <div id="navbarCollapse" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Главная</a></li> <li><a href="#">Статьи</a></li> <li><a href="#">Новости</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Войти</a></li> </ul> </div> </nav>
Статическое меню
<nav role="navigation" class="navbar navbar-default navbar-static-top"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" data-target="#navbarCollapse" data-toggle="collapse" class="navbar-toggle"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="#" class="navbar-brand">Бренд</a> </div> <!-- Collection of nav links and other content for toggling --> <div id="navbarCollapse" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Главная</a></li> <li><a href="#">Статьи</a></li> <li><a href="#">Новости</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Войти</a></li> </ul> </div> </nav>
Как поменять цвет меню?
В строку №1 к классу «navbar» добавьте дополнительно любой придуманный класс, например «red»:
<nav role="navigation" class="navbar navbar-default navbar-static-top red">
Теперь между тегами <head></head> добавьте код CSS:
<style> .red { background: #cc0000;} li.active a { background-color: #5a0202 !important;} ul.nav.navbar-nav a {color: #fff !important;} </style>
Кто не знает CSS, вам сюда.
Это все! В следующем уроке мы продолжим изучать основы Bootstrap 3.
Степан, это лучшие вводные уроки по бутстрапу..
Спасибо большое за этот труд!
Ответить
31 марта, 2017 at 12:30
Пожалуйста, Олег!
И Вам спасибо за комментарий!
Ответить
Как меню вывести через переменную или как то иначе, что бы не писать все в индекс файл? Спасибо!
Ответить
21 ноября, 2017 at 18:00
Через оператор php Include или Require
Но для этого нужно почитать основы php или вот, смотрите.
Ответить
Нет никакого объяснения что это такое и как им свободно манипулировать. Что такое класс sr-only и для чего он нужен? Для чего класс collapse? А для чего navbar-collapse? Какие ещё есть варианты? Контент из ряда:" Ээээм...ну это так, а это так. Не знаю почему - но вот так. Вооооот, используйте пожалуйста. " Вы объясняете только шаблон, но кому он нужен? Расскажите как работает каждая деталь, чтобы было возможно выстраивать из них какие-то конструкции. 1/10, крайне недоволен что убил время на этот сайт.
Ответить
2 апреля, 2018 at 23:04
Не убивайте время, а пойдите и почитайте документацию и сами разложите все по полочкам ))))
Мне кажется, что порой я трачу больше времени на писанину статьей для таких как вы, который приходят на мой блог и вечно всем не довольны.
Ответить
Спасибо, отличные уроки!
Ответить
Степан, за блог - спасибо. Но есть вопросы при использовании кода из раздела
"Навигационное меню, прикрепленное к верхней части страницы":
1. Активная кнопка из 16 строки навсегда поменяла свой цвет, выделение идет только шрифта, которое, кстати, игнорирует стили для ссылок прописанные в файле .css;
2. Получившееся меню самостоятельно не сворачивается после выбора одного из пунктов;
3. Свернутое в кнопку меню перестает работать через несколько минут - реанимируется только открытием сайта в новой вкладке браузера.
Буду признателен, если поможете разобраться.
Ответить
20 декабря, 2018 at 10:57
мне нужно посмотреть на Ваш код
Ответить
Степан, добрый день!
Вы допустили ошибку в заголовке этой статьи:
у вас написано "Горизнтальное", пропущена буква "о"
Ответить
28 января, 2020 at 17:45
Спасибо, Паша!
Ответить
Добрый день, урок очень хороший, ваш код подошел к новой теме, которую я пыталась создать. Но мне сейчас надо поправить меню в теме bootstrap-basic4 (сделать кликабельным родительский пункт меню, второй уровень выпадает и рабоет как надо).
Попробовала подставить ваш код, но с ним у меня формируется еще одно меню над существующим.
Сейчас код вот такой (header.php)
Ответить