Как сделать меню с логотипом html

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Как в Bootstrap создать горизонтальное адаптивное меню

Создание горизонтального адаптивного меню для сайта в Bootstrap осуществляется с помощью компонента Navbar.

Navbar имеет 2 режима отображения:

Режим отображения меню зависит от ширины viewport браузера. По умолчанию меню Navbar имеет мобильный вид при ширине viewport меньше 768px.

Описание меню Navbar

Меню Navbar состоит из:

HTML-структура Bootstrap меню Navbar (без поддержки вспомогательных технологий):

Работа с меню в основном заключается в наполнении её содержимого (элемента с классом navbar-collapse ).

Добавление в меню ссылок и выпадающего списка

Добавление ссылок в меню осуществляется следующим образом:

Класс active предназначен для подсвечивания активного пункта меню.

Добавление выпадающего списка в меню:

Добавления разделителя между пунктами в выпадающем меню осуществляется посредством добавления элемента li с классом divider :

Добавим в меню ещё блок, содержащий ссылку и выпадающий список, но расположенный справа:

Назначение атрибутов и классов (как работает схлопывание меню)

Значение атрибута data-target кнопки

Значение атрибута data-target кнопки "Гамбургер" должно указывать на элемент, представляющий собой основной контент горизонтального меню Bootstrap Navbar

Кроме атрибута data-target и связанным с ним id , в меню Navbar используются и много других сущностей. Они играют роль селекторов, с помощью которых к элементам меню добавляются стили (CSS) и логика (JavaScript).

Кроме этого, JavaScript, в зависимости от состояния меню, добавляет и к другим элементам различные классы.

Для элемента, в котором отображается основной контент, логика JavaScript устанавливает определённый класс (классы) из следующего списка:

  • collapse (скрыт);
  • collapsing (находится в процессе открытия или закрытия);
  • collapse и in (открыт).

Поддержка вспомогательных технологий

HTML-структура Bootstrap меню Navbar с поддержкой вспомогательных технологий:

В вышеприведённом примере разметка блока Navbar представлена с использованием ARIA атрибутов и класса sr-only . Данные сущности предназначены для того, чтобы сделать горизонтальное меню более доступным для программ чтения экрана.

Класс sr-only предназначен для скрытия контента на всех устройствах, кроме программ Screen Readers. Т.е. содержимое нижеприведённых элементов будет доступно только им:

При чтении HTML страницы пользователь не поймёт что это за элемент, если к нему не добавить поясняющий текст. Например, фраза Toggle Navigation поясняет, что с помощью этого элемента осуществляется переключение навигации.

Кстати, если ваша аудитория является русскоговорящей и пользователь не знает английского языка, то он и в этом случае может не понять назначение элемента.

Поэтому для русскоговорящей аудитории текст желательно указывать так:

Атрибут role предназначен для того, чтобы указать назначение того или иного элемента:

  • role="navigation" – содержит навигацию;
  • role="button" – элемент, на который можно кликнуть.

Атрибуты, начинающиеся с aria , предназначены для описания элементов и их состояния:

  • aria-expanded – сообщает, развёрнут или свёрнут элемент;
  • aria-haspopup – сообщает, что элемент имеет подменю или контекстное меню.

Если вам не нужна поддержка вспомогательных технологий, то данные сущности при создании меню можно не использовать.

Использование в качестве бренда изображения

В качестве бренда можно использовать не только текст, но и изображение ( img ).

При установке изображения придётся немного подкорректировать класс navbar-brand . А именно в зависимости от высоты изображения изменить значение padding отступов.

Например, для изображения, имеющего высоту 36px, в качестве значений отступов padding-top и padding-bottom необходимо установить следующее:

Вставка формы в меню

Помещение формы в меню осуществляется посредством добавления к ней класса navbar-form:

Класс navbar-form необходим для того, чтобы обеспечить правильное позиционирование формы внутри меню.

Некоторым элементам управления формы, например, таким как группа кнопок, может потребоваться установка фиксированной ширины для того, чтобы обеспечить их правильное отображение внутри компонента Navbar.

Вставка кнопки в меню

Вставка в меню кнопки, расположенной вне формы, осуществляется посредством добавления к ней дополнительного класса navbar-btn .

Класс navbar-btn может применяться к элементам a и input .

Вставка текста в меню

Для того чтобы в меню поместить некоторый текст, его необходимо обернуть с помощью элемента p и добавить к нему класс navbar-text .

Ссылки вне элемента nav

Для использования стандартных ссылок вне специально предназначенного для этого элемента, к ним необходимо добавить класс navbar-link .

Выравнивание элементов внутри меню

Выравнивание ссылок, форм, кнопок и текста в меню осуществляется с помощью добавления к ним класса navbar-left или navbar-right . Эти классы выравнивают элемент соответственно по левому или по правому краю. Осуществляют они это действие посредством установки элементу CSS-свойства float со значением left или right .

В отличие от классов pull-left и pull-right , они делают это только для десктопной версии горизонтального меню Navbar.

Например, для того чтобы выровнять группу гиперссылок в меню по правому краю, к элементу ul необходимо добавить класс navbar-right :

Управление видимостью элементов меню на устройствах

В Bootstrap 3 имеется набор адаптивных классов (например, hidden-xs , hidden-sm , hidden-md , hidden-lg ), с помощью которых можно очень просто скрыть отображения элемента на определённых устройствах.

Например, скроем отображения элемента в меню на маленьких (sm) и средних (md) экранах.

Фиксированное (плавающее) меню

Bootstrap 3 предоставляет классы, с помощью которых вы можете прикрепить (зафиксировать) меню при прокрутке странице к её верхней или нижней части.

Прикрепление к верхней части страницы

Для создания адаптивного горизонтального меню, прикрепленного к верхней части страницы, к нему необходимо добавить дополнительный класс navbar-fixed-top .

Содержимое горизонтального меню помещайте внутрь контейнера с классом container или container-fluid . Это обеспечит центрирование меню и установку необходимых отступов слева и справа для его контента.

Для того чтобы верхнее фиксированное меню не накладывалась на контент страницы необходимо для элемента body добавить CSS свойство padding-top (высота меню Navbar по умолчанию равна 50px):

Данное правило необходимо включить в свой файл CSS. Этот файл должен быть подключен после Bootstrap CSS.

Меню, прикрепленное к нижней части страницы

Прикрепление меню к нижней части страницы осуществляется посредством добавления к нему дополнительного класса navbar-fixed-bottom .

Чтобы нижнее фиксированное меню не накладывалась на контент страницы необходимо для элемента body добавить следующее CSS правило:

Неподвижное верхнее горизонтальное меню

При расположении обычного (прокручиваемого) меню в верхней части страницы к нему желательно добавить класс navbar-static-top .

Данный класс ( navbar-static-top ) :

  • убирает радиусы ( border-radius: 0 );
  • удаляет левую, правую и верхнюю границу у меню ( border-width: 0 0 1px ).

Меню, имеющее тёмные цвета

Фреймворк Bootstrap предоставляет класс navbar-inverse , с помощью которого вы можете установить меню тёмный стиль (инвертированный по отношению к navbar-default ).

Горизонтальное меню Bootstrap в тёмном стиле

Горизонтальное меню Bootstrap в тёмном стиле

Как изменить точку переключения navbar

Самый простой способ изменить точку переключения (значение переменной @grid-float-breakpoint ) – это создать свою сборку Bootstrap на странице Customize.

Установка в качестве точки переключения меню Navbar значения 900px

Установка в качестве точки переключения меню Navbar значения 900px

Способ изменения точки схлопывания меню с помощью CSS (без создания своей сборки):

Для того чтобы создать не схлопывающееся меню можно воспользоваться вышеприведённым решением, но назначить в качестве значения переменной @grid-float-breakpoint значение 320px (минимальную ширину экрана устройства).

Как зафиксировать меню при прокрутке

Если необходимо зафиксировать меню не сразу, а после прокрутки страницы на величину, равной высоте некоторого блока, расположенного до него, то можно воспользоваться CSS свойством position со значением sticky .

Но данное решение не работает в браузерах IE и Edge. Если нужна их поддержка всех браузеров, то можно воспользоваться плагином Bootstrap 3 Affix.

CSS (стили для откреплённого меню, т.е. находящегося в состоянии affix):

Bootstrap Navbar - Анимация кнопки меню

1 вариант (анимация в иконку закрытия):

2 вариант (анимация в стрелочку, направленную вверх):

Изменение максимальной высоты collapsed блока

В Bootstrap 3 по умолчанию максимальная высота выпадающего (collapsed) блока (в мобильном виде) равна 340px.

Если вы хотите данное значение устанавливать динамически, т.е. в зависимости от высоты устройства, то можно воспользоваться следующим скриптом (для верхнего фиксированного меню Navbar):

Если необходимо с учётом возможного изменения экрана, то так:

Пример, как collapsed блок можно развернуть на всю высоту устройства (для верхнего фиксированного меню Navbar):

Горизонтальное меню для навигации по странице

Пример создания меню для одностраничного сайта с подсветкой текущего пункта (с использованием компонента ScrollSpy):

Дополнительно на страницу необходимо ещё поместить скрипт, который будет в мобильном виде при нажатии на ссылку закрывать collapsed блок:

Navbar - Открытие dropdown меню при наведении

Сценарий JavaScript, с помощью которого можно изменить способ открытия выпадающих списков в десктопной версии меню Navbar (при наведении):

Установка активного пункта меню с помощью JavaScript

Подсветку активного пункта (установку ему класса active ) можно выполнять не только на стороне сервера, но и на клиенте (в браузере) с помощью следующего сценария JavaScript:

Изменение высоты Navbar

Наиболее простой способ изменить высоту – это собрать свою сборку (например, на странице Bootstrap Customize). За высоту меню Navbar отвечает переменная @navbar-height .

вертикальное меню

Для удобной навигации по сайту на всех страницах используют меню, чтобы пользователю было понятно, что и где у вас находится. Практически всегда в верхней части страницы (в шапке) располагают горизонтальное меню по разделам (категориям) сайта, а вертикальное меню прописывают в сайтбаре (в колонке) и используют для навигации по статьям.

Из статьи вы поймёте как сделать меню для сайта html, что для этого потребуется прописать, чтобы получилось горизонтальное и вертикальное меню на css, либо меню с выпадающим списком.

Как сделать меню на html

Для того, чтобы сделать меню (любое) мы будем использовать маркированный список, которому придадим непосредственно свой class и пропишем для этого класса свои параметры с необходимыми значениями.

К примеру, для создания меню мы используем список с классом class="menu" (название класса любое, только латинские буквы), и код html будет выглядеть так:

Обязательные параметры и значения CSS

  • margin: 0; - убираем все отступы списка, иначе браузер подставит значения по умолчанию 20px;
  • list-style-type: none; - убираем маркеры у пунктов меню, иначе браузер добавит точки или цифры.

Вот таким образом делается меню на html страницах, и теперь перейдём к созданию горизонтального меню и рассмотрим всё на примерах.

Как сделать горизонтальное меню на CSS

Для отображения горизонтального меню применяя список, нам достаточно прописать в вышеуказанный код всего один параметр display: inline; , чтобы пункты меню выровнялись в одну строку и шли друг за другом по горизонтали. А так же добавим отступы между пунктами меню с помощью margin .

И выглядеть это будет так:

Горизонтальное меню у нас готово, осталось придать ему красивый внешний вид.

Давайте каждому пункту в горизонтальном меню придадим рамку border и сделаем у неё скошенные края, заполним определённым цветом background-color ( добавим фон для пункта меню ), и изменим вид ссылки.

Отображаться горизонтальное меню уже будет таким образом:

Так как горизонтальное меню в большинстве случаях прописывают в шапке сайта, то и я в примере добавил в меню фон, который вы измените под свой цвет шапки.

И для наглядности сделал пункты меню по центру, применив свойство text-align: center; , которое можно удалить (выровняется автоматически по левому краю), либо задать значение text-align: right; и горизонтальное меню отобразится по правому краю.

Кстати вы можете так же воспользоваться готовое меню на css и jQuery, которые вы можете там воочию посмотреть и бесплатно скачать.

Как сделать вертикальное меню на CSS

Вертикальное меню на CSS делается и оформляется на странице практически так же как и горизонтальное, только здесь изменяется в .menu-2 li <. параметр со значением display: block; (указывает на блочный элемент), что придаёт ему вертикальное отображение пунктов меню.

И ещё одно дополнение к вертикальному меню: так как оно в большинстве случаев находится в боковой колонке сайта, которое имеет фиксированную ширину, то и мы вынуждены задать ширину width: 100%; нашему вертикальному меню, чтобы оно полностью занимало всю ширину колонки.

Давайте рассмотрим вертикальное меню CSS на примере:

Вот так вертикальное меню отобразится на странице:

я прописал для вертикального меню вместо боковой колонки сайта, поэтому вы его удалите и в конце кода

Как сделать выпадающее меню на CSS

Сделать выпадающее меню с помощью CSS довольно просто. Мы всего лишь добавим к существующему коду от вертикального меню несколько параметров, которые и будут отвечать за выпадающий список пунктов меню.

Обязательно запомните!
Для того, чтобы выпадающее меню строго появлялось напротив ведущей ссылки, необходимо в CSS для тега li , где находится эта ссылка, прописать position: relative; , а для выпадающего меню position: absolute;

Давайте напишем html код для выпадающего меню на CSS.

Посмотрите, как будет выглядеть на странице выпадающее меню на CSS.

Точно таким же образом прописывается выпадающее меню и при горизонтальном расположение навигации. Единственное, это не забывайте менять значения у параметров top и left (отступ сверху и слева).

Посмотрите!
Как сделав всего 3 изменения в CSS, наше вертикальное расположение навигации с выпадающим меню, превратиться в горизонтальное с выпадающим меню.

От автора: приветствую вас на нашем блоге о сайтостроении. Это цикл статей, посвященный новой спецификации и сегодня я бы хотел вам рассказать, как сделать в html5 меню и чем этот процесс отличается от такого же в предыдущих версиях языка.

В чем отличия

Прежде всего я хотел бы сказать, что спецификация не является уж такой и новой – она начала свое становление еще в 2009 году. Собственно, с тех пор происходит постоянное развитие – в html5 появляются новые возможности, современные браузеры все больше и больше поддерживают эти самые возможности, так что уже скоро можно будет говорить о полной поддержке этой технология, хотя она и не является чем-то единым целым, это скорее набор новых возможностей, каждая из которых является самостоятельной.

Ну хорошо, а чем же отличается создание главной навигации (меню), раз уж вы читаете статью на эту тему, то какие-то отличия точно должны быть. Ну а как раньше создавалось меню? Обычно для этого использовали маркированный список, который помещали в дополнительный контейнер для всей навигации – обычный div.

Так вот, с появлением новых тегов теперь можно поступить более правильно – вместо тега div обернуть меню в nav – новый семантический элемент, который создан специально для того, чтобы собирать в него самые главные ссылки, группировать их вместе.

В nav можно поместить как список, так и просто набор ссылок. Мне кажется, это даже более простое и правильное решение, хотя во многих шаблонах по-прежнему видно реализацию меню с помощью тегов ul, li, a.


Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Интересно, что контейнер nav создан именно для приоритетных ссылок на странице. На самом деле таких конйтенеров на странице может быть больше одного, но помещать в них стоит только те ссылки, которые действительно формируют главную навигацию (например, верхнее главное меню и его дубль в футере страницы).

Как сделать с помощью html5 горизонтальное меню

Поскольку теперь ссылки можно помещать в семантический элемент nav, то создание горизонтальной навигации я вижу очень просто.

Поэтому базовой структурой для всех примеров ниже будет следующий код:

Меняться будет только атрибут id. И именно к нему будет привязано все основное форматирование меню.

Еще нам понадобится css-код, отвечающий за базовые css-правила:

Здесь мы задаем шрифт для body, а также ширину, отключаем отступы внешние (margin:0) и внутренние (padding:0) для элементов ul и li, задаем нижний отступ для ul и изменяем цвет ссылок ( внимание. ) на белый. А это значит, что при обновлении страницы, если вы все делаете пошагово, ссылок вы НЕ УВИДИТЕ. Т.к. на белом фоне body белый цвет текста не читается. Зато чуть позже нам это пригодится.

Вариант 1. Простое горизонтальное меню

Для первого элемента ul задаем , т.е. горизонтальное меню. Сейчас наш блок ссылок пока еще является вертикальным. Но в CSS мы зададим для элементов li свойство display: inline-block - и сразу получим горизонтальное меню. Добавим стандартный синий цвет ссылкам и отступы для li. Вот что получилось:

Вариант 2. Горизонтальное меню с inline-block элементами

Во втором примере рассмотрим форматирование меню, очень похожего на первый вариант, но с фоном, изменяющимся при наведении на пункт меню. Для ul во втором случае зададим id="menu-bg". CSS:

Обратите внимание еще на один момент: здесь вертикальные отступы для пункта меню создавались не с помощью свойства padding, а с помощью высоты элемента (height: 40px) и такой же точно высоты для текста (line-height: 40px). За счет этого получилось, что текст расположился ровно посередине блока по вертикали.

Задача центрирования горизонтального меню может оказаться не такой уж простой, особенно для новичков в CSS. Поиск решений приводит к весьма ограниченному списку методов, основная часть которых полагается на трюки CSS, JavaScript или использование нестандартных правил, которые поддерживаются не всеми браузерами. В данном уроке мы разберем метод центрирования горизонтального меню, который использует только стандартные правила CSS и работает во всех браузерах.

Пример центрированного меню

Ниже приведено горизонтальное центрированное в данной колонке меню, в котором активизирована вторая закладка. Можно попробовать изменить размер окна браузера или страницы, чтобы убедиться в том, что меню всегда остается центрированным и рабочим.

demo
sourse

На демонстрационной странице можно увидеть несколько вариантов оформления горизонтально центрированного меню. Любой из них можно использовать в своих проектах.

Разметка HTML

Все меню, примеры которых приводятся в данном уроке, используют простую структуру. Это обыкновенный неупорядоченный список ссылок, помещенный в элемент div.

Код CSS центрированного меню

Ниже приводится полный код CSS, с помощью которого центрируется меню. А объяснения принципа работы приводятся далее в уроке.

Как работает метод центрирования

Действие метода основано на относительном позиционировании плавающих блочных элементов один в другом. Для начала посмотрим, как изменяется размер элементов при смещении.

Элемент div без смещения

Элемент div без смещения

Элемент div (блочный) без смещения растягивается на всю доступную ему ширину.

Элемент div со смещением влево

Элемент div со смещением влево

Но если мы будем смещать элемент div влево, он автоматически будет ужиматься до размеров своего содержимого. Сжатие является ключевым моментом в реализации данного метода центрирования меню. Оно помогает перемещать меню в правильную позицию.

Стандартное выровненное влево меню

Возьмем стандартное выровненное влево меню и будем шаг за шагом его переделывать. Для наглядности пункты окрашены в разные цвета, так что сразу понятно, что куда вложено.

Стандартное меню

Обратите внимание на следующие моменты:

  • Элемент centeredmenu div (голубой прямоугольник) смещается влево, но имеет ширину 100%, поэтому остается растянутым на всю страницу.
  • Элемент ul (розовый прямоугольник) находится внутри элемента centeredmenudiv и смещается влево. Это означает, что он будет ужат до ширины своего содержимого, то есть до суммарной ширины всех закладок.
  • Все элементы li (зеленые прямоугольники) находятся внутри элемента ul и смещаются влево. Таким образом, они ужимаются до размеров ссылок в них и выстраиваются в одну горизонтальную линию.
  • Внутри каждой ссылки (оранжевые прямоугольники) выводится текст закладки: Закладка 1, Закладка 2 и так далее.

Смещаем положение неупорядоченного списка

Смещение неупорядоченного списка

Затем мы смещаем элемент ul вправо на 50% с помощью свойства position:relative; . Когда элемент смещается с указанием процента при таких условиях важно помнить, что суммарная ширина содержащихся в нем элементов не является его шириной. В нашем случае смещение происходит на половину окна браузера (или доступного для вывода пространства).В результате наше меню начинается на середине окна и частично выходит за его пределы. И переходим к следующему шагу.

Сдвигаем положение всех элементов меню

Сдвигаем элементы меню

Осталось только сдвинуть все элементы li влево на 50%. Это 50% ширины нашего элемента ul (контейнера, который содержит меню). Таким образом, закладки смещаются точно на центр окна.

Несколько важных замечаний

При использовании данного метода центрирования надо помнить о нескольких важных моментах:

  • Так как элемент ul частично выходит за рамки окна, то это приводит к выводу полос прокрутки. Поэтому нужно использовать правило overflow:hidden; для элемента centeredmenu div. Таким образом, выступающая часть элемента div будет обрезана.
  • Так как элемент ul не выровнен по закладкам, то нельзя использовать никаких визуальных стилей для него. Оставьте элемент ul без фонового цвета и без рамки, чтобы он стал полностью невидимым. А стили для закладок нужно использовать только для элементов li.
  • Если нужно задать особенные стили для первой и последней закладки, нужно добавить класс для первого и последнего элементов li, чтобы можно было стилизовать их индивидуально.

Заключение

Предложенное решение совместимо со всеми браузерами, не использует JavaScript и поддерживает изменяемый размер текста.

Читайте также: