CSS и HTML5: Респонсив навигационное меню. В этом выпуске

21.03.2019

Мы предлагаем вам ознакомиться с новой техникой по созданию респонсив (адаптивного) меню без использования Javascript. Она использует чистые и семантические разметки HTML5. Меню может быть выровнено по левому краю, по центру или справа. Это меню переключается при наведении, что является более удобным для пользователей. У него также есть индикатор, который показывает “работающий/поточный” пункт меню. Он работает на всех мобильных и настольных браузерах, включая Internet Explorer!

Цель

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

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

Nav HTML разметка

Вот разметка для навигации. Тег необходим для создания выпадающего меню со свойством CSS абсолютной позиции. Мы объясним это в уроке позже. .current класс указывает на активные/текущие ссылки меню.

  • Portfolio
  • Illustration
  • Web Design
  • Print Media
  • Graphic Design

CSS для навигации (вид с рабочего стола) является довольно простым, так что мы не собираемся вдаваться в подробности. Обратите внимание, что мы указали display:inline-block вместо float:left в NAV элемента

  • . Это позволит кнопкам меню выстроиться по левому краю, по центру или вправо, указав text-align на
      элементе.

      /* nav */ .nav { position: relative; margin: 20px 0; } .nav ul { margin: 0; padding: 0; } .nav li { margin: 0 5px 10px 0; padding: 0; list-style: none; display: inline-block; } .nav a { padding: 3px 12px; text-decoration: none; color: #999; line-height: 100%; } .nav a:hover { color: #000; } .nav .current a { background: #999; color: #fff; border-radius: 5px; }

      Центр и выравнивание по правому краю

      Как уже упоминалось выше, вы можете изменить выравнивание кнопок с помощью “text-align”.

      /* right nav */ .nav.right ul { text-align: right; } /* center nav */ .nav.center ul { text-align: center; }

      Поддержка Internet Explorer

      HTML5 тег и медиа запросы не поддерживаются Internet Explorer 8 и старше версиями. Включите CSS3-mediaqueries.js (или respond.js) и html5shim.js, чтобы обеспечить резервную поддержку. Если вы не хотите добавлять html5shim.js, то тогда замените тег на тег.

      Здесь начинается самое интересное - создание респонсивности меню с медиа запросами! На 600px мы установили nav элемент в относительное положение, чтобы возможно было поместить

        список меню вверху с абсолютной позицией. Мы скрыли все элементы
      • указав display:none, но оставили.current
      • отображающийся в виде блока. Затем на NAV ховере, мы поставили все
      • на display:block (это даст результат выпадающего списка). Мы добавили графический значок на проверку.current элемента, чтобы указать, что этот элемент является активным. Для выравнивания меню по центру и справа, используйте левую и правую собственности позиционирования
          списка.

          @media screen and (max-width: 600px) { .nav { position: relative; min-height: 40px; } .nav ul { width: 180px; padding: 5px 0; position: absolute; top: 0; left: 0; border: solid 1px #aaa; background: #fff url(images/icon-menu.png) no-repeat 10px 11px; border-radius: 5px; box-shadow: 0 1px 2px rgba(0,0,0,.3); } .nav li { display: none; /* hide all

        • items */ margin: 0; } .nav .current { display: block; /* show only current
        • item */ } .nav a { display: block; padding: 5px 5px 5px 32px; text-align: left; } .nav .current a { background: none; color: #666; } /* on nav hover */ .nav ul:hover { background-image: none; } .nav ul:hover li { display: block; margin: 0 0 5px; } .nav ul:hover .current { background: url(images/icon-check.png) no-repeat 10px 7px; } /* right nav */ .nav.right ul { left: auto; right: 0; } /* center nav */ .nav.center ul { left: 50%; margin-left: -90px; } }

          Высоких конверсий!

          Creating dropdown menu for the websites is no more a new trend as it has been accepted very well all over the world. By using dropdown menu, designers cannot only create a visual appeal in the website design but can also provide an effective navigation scheme for the website. HTML5 and CSS3 have made creating visually appealing dropdown menu quite easy.

          Here, we are presenting some of the free dropdown menus that were developed by using HTML5 and CSS3 . We hope that you will like this collection and find it useful for you. Do share your opinions with us via comment section below. Let us have a look and feel free to share it with friends as well. Enjoy!

          This dropdown menu can give your website very elegant and impressive sliding box navigation. Moreover, a submenu box can also be integrated with this in order to make it more appealing.

          This is a very simple CSS3 based animated navigation menu that can degrade quite gracefully to be used in older browsers as well as it is future proof so that you can use it with the next generation of browsers as well.

          With this CSS3 based animated dropdown menu, one can add beautiful transitions and transforms to his website or template, and add a polished look to his website.

          With this dropdown menu, you can achieve two level menus for easy navigation.

          In this dropdown menu, only CSS is used and there are no images in this dropdown menu. Moreover, it is cross browser compatible and optimized for IE7.

          This is another very elegant and classy type of dark CSS3 menu template that you can use on your website as well.

          As the name of this dropdown menu suggests, it is a creative piece of dropdown menu that can give a website a very unique and pleasing look.

          If you are looking for some inspiration for creating a marble style CSS3 based navigation then this dropdown menu can serve you with lots of inspiring ideas. This horizontal dropdown CSS3 menu will be suitable for black and for white websites.

          With CSS3, one can easily create various types of dropdown menus. One simply has to connect with his imagination power and the outcome can be mind-blowing. In this dropdown menu, when you hover on the upper menu items, the submenu items appear whirling.

          This is another great example of creativity and skill. This is a multilevel CSS3 based dropdown menu with transition and animation. This is UL-LI-based multilevel menu.

          This dropdown menu is also created by using CSS3 and sub menus are created by using animation with some amazing transition effects. Keep in mind that these new effects work only in the freshest browsers.

          This is another UL-LI based CSS3 dropdown menu that looks like the menu on Microsoft website. This click action CSS3 based dropdown menu is created with the help of jQuery.

          Here is another one-click action multilevel CSS3 based dropdown menu where submenu appears on click action and not on hover.

          Here is another two level CSS3 based dropdown menu where submenu slides when you hover the parent elements. This is a pure CSS based dropdown menu with no JS. It renders perfect on Firefox, Chrome and Safari browsers.

          15. Multilevel CSS3 Metal Navigation with icons

          This is another multilevel CSS3 based dropdown menu with icons in metal style that looks extremely beautiful. This is also UL-LI based menu.

          This dropdown menu comes with slide out submenus that give it very stylish look. The colored tabs add further beauty in the overall look. The sliding effect work in Firefox, Chrome, and Safari and possibly in Opera too.

          17. CSS Drop-Down Menu Framework

          Another CSS based dropdown menu framework that is clean, standards-friendly, free, easy to use and cross browser framework.

          18. Drop-down Nav Menu With HTML5, CSS3 and JQuery

          This dropdown menu is created by using CSS3, HTML5 and jQuery for easy and friendly navigation menu. JQuery is used to handle effects and add finishing touches as well.

          Here is another multilevel dropdown menu that is like Mac. Border-radius, box-shadow, and text-shadow have been used in creating this menu. It renders perfect on Firefox, Safari and Chrome.

          Here is another CSS3 animated menu. Powerful CSS3 effects and transitions are used here in order to build a JS free animated navigation menu.

          21. Kick-Butt CSS3 Mega Drop-Down Menu

          This is a mega menu that is common on ecommerce websites because it can display a lot of content while keeping the layout clean. It is cross browser compatible menu.

          This is another stunning example of CSS3 based navigation menu that can a sophisticated look to any website or template.

          This is another mega menu based on CSS3 and HTML5 that can be used to display a relatively large content in a neat and clean layout. This includes 5 containers with blocks of content and lists.

          CSS3 keyframes property is used to create an appealing flashy effect. Initially, the menu is in gray color but on hover, the menu color changes to very light bluish gray color to a dark blue color over a period of 200ms.

          This fancy navigation menu is created with JQuery using .animate() techniques and .clone() so that we can get two stacks menu item (the red and white stack).

          Here, CSS3 is used to create sweet tabbed navigation.

          This jQuery style like menu is created by using some CSS3 transitions that can replace all the fancy jQuery animation one day. The animated sliding vertical menu looks good.

          28. Fun Animated Navigation Menu With Pure CSS

          This is a navigation menu which you can use to add a polished look to your website or template. It uses @font-face, transforms and transitions. It renders perfect on Firefox, Safari and Chrome.

          29. CSS3 Wheel Menu

          Here, CSS3 is used to create an awesome, layered CSS3 wheel menu that looks amazing and can give your website a very nice look.

          30. The Fanciest Dropdown Menu You Ever Saw

          This dropdown menu shows that one can create the fanciest dropdown menu by using CSS3.

          Using dropdown menus have become a must-to-have thing in desktop applications, and with CSS and jQuery one can achieve the desired results.

          LavaLamp effect is based on jQuery plugin and here CSS3 transitions are used to achieve that result without any JavaScript.

          33. 3-Level Navigation Menu

          This is a multilevel dropdown menu that you can use on your website to display large content while keeping the layout neat and clean.

          This musical drop down menu is created using HTML5 and CS3 animation effects.

          This is a very stylish and vertical multicolor 3D CSS3 based dropdown menu for adding a fine look to your website. This is UL-LI-based menu.

          Элемент не нов для HTML, но в пятой версии языка изменилось его лексическое назначение. Теперь он представляет собой список команд, который в зависимости от установленного значения атрибута type может выполнять три различных функции — контекстное меню, панель инструментов (toolbar) и произвольное меню с командами:

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

        • Если встречается команда, то она добавляется в меню с учетом ее атрибутов.
        • Элемент , а также с пустым атрибутом value , установленным булевым атрибутом disabled="disabled" и одним или несколькими знаками «-» в содержимом считаются разделителями и отображаются соответствующим образом.
        • Если встречается
        • или , то браузер итеративно просматривает элементы внутри них, следуя этим же правилам.
        • Встретив элемент или другой без атрибута label , браузер добавляет разделитель и продолжает итеративный просмотр в их содержимом.
        • Элементы и с установленными атрибутами label сообщают браузеру о необходимости добавить дочернее меню с указанным в label заголовком. Формирование этого подменю подчиняется этим же правилам.
        • Любые другие элементы игнорируются браузером.
        • Разделители в начале и в конце меню игнорируются, а несколько идущих подряд разделителей объединяются в один.

        • Давайте рассмотрим подробнее способы добавления команд. В зависимости от действия при нажатии, команды делятся на три типа, описанные в следующей таблице:

          HTML 5 предлагает также универсальный элемент , позволяющий создавать любые типы команд, устанавливая его атрибут type в одно из значений: command , radio или checkbox . Он обладает собственными атрибутами, повторяющими почти все возможности других элементов для создания команд.

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

          Отменить

          Чтобы объединить несколько переключателей в группу, применяется атрибут radiogroup (обязательный для переключателей). Достаточно указать одинаковое значение для всех элементов одной группы. В случае с применением элементов для этого применяется «родной» атрибут name , а несколько объединяются автоматически вхождением в один .

          Чтобы указать выбранный по умолчанию вариант переключателя или установить флажок, присвойте элементу булев атрибут checked="checked" . В случае же с элементами и за это отвечают их атрибуты checked и selected соответственно.

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

          Независимо от выбранного способа добавления команды, вы можете присвоить ей комбинацию клавиш для быстрого доступа, указав атрибут accesskey , о котором шла речь в главе «Элементы ввода ». Можно также указать accesskey не в самой команде, а в связанном с ней элементе , или даже в , находящемся в одном с требуемой командой.

          Создание
          контекстного меню

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

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

          Кликни правой кнопкой, чтобы открыть контекстное меню.

        • Пункт 1
        • Пункт 2
        • 5 комментариев Любопытно и даже область применения весьма обширная. Жаль из-за ослика.... Ослик скоро вымрет... Нужно осваивать эту тему. Я рискнул взять на нормальный проект. Только не контекст... Ссыкотно с этими драфтами Любопытно что всё это не работает на данный момент ни в одном браузере, ибо в HTML5 данный тег ни в одном браузере не реализован. тоесть получается всё это теория на будущее и на данный момент практической ценности не имеет. поправьте если ошибаюсь Simple Green Menu

          Если ваш веб-сайт не ограничивается одной веб-страницей, то стоит подумать о добавлении панели навигации (меню). Меню - раздел веб-сайта, предназначенный помогать посетителю перемещаться по сайту. Любое меню представляет собой список ссылок, ведущих на внутренние страницы сайта. Самым простым способом добавить панель навигации на сайт является создание меню с помощью CSS и HTML .

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

          Первым шагом создания вертикального меню будет создание маркированного списка . Также нам нужно будет иметь возможность идентифицировать список, поэтому мы добавим к нему атрибут id с идентификатором "navbar". Каждый элемент

        • нашего списка будет содержать по одной ссылке:

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

          #navbar { margin: 0; padding: 0; list-style-type: none; width: 100px; }

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

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

          #navbar a { background-color: #949494; color: #fff; padding: 5px; text-decoration: none; font-weight: bold; border-left: 5px solid #33ADFF; display: block; } #navbar li { border-left: 10px solid #666; border-bottom: 1px solid #666; }

          Мы объединили весь код, описанный выше, в один пример, теперь, нажав на кнопку попробовать, вы можете перейти на страницу с примером и увидеть результат:

          Название документа #navbar { margin: 0; padding: 0; list-style-type: none; width: 100px; } #navbar li { border-left: 10px solid #666; border-bottom: 1px solid #666; } #navbar a { background-color: #949494; color: #fff; padding: 5px; text-decoration: none; font-weight: bold; border-left: 5px solid #33ADFF; display: block; }

          Попробовать »

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

          Вернемся к рассмотренному ранее примеру вертикального меню и добавим в таблицу стилей следующее правило:

          #navbar a:hover { background-color: #666; border-left: 5px solid #3333FF; } Попробовать »

          Горизонтальное меню

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

          Горизонтальное меню можно создать путем стилизации обычного списка. Свойству display для элементов

        • нужно присвоить значение inline, чтобы пункты списка располагались друг за другом.

          Для размещения пунктов меню по горизонтали, сначала создадим маркированный список с ссылками:

          Напишем для нашего списка пару правил, сбрасывающих стиль используемый для списков по умолчанию, и переопределим пункты списка с блочных на строчные:

          #navbar { margin: 0; padding: 0; list-style-type: none; } #navbar li { display: inline; } Попробовать »

          Теперь нам осталось лишь определить стилевое оформление для нашего горизонтального меню:

          #navbar { margin: 0; padding: 0; list-style-type: none; border: 2px solid #0066FF; border-radius: 20px 5px; width: 550px; text-align: center; background-color: #33ADFF; } #navbar a { color: #fff; padding: 5px 10px; text-decoration: none; font-weight: bold; display: inline-block; width: 100px; } #navbar a:hover { border-radius: 20px 5px; background-color: #0066FF; } Попробовать »

          Выпадающее меню

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

          Сначала нам нужно создать HTML-структуру нашего меню. Основные навигационные ссылки мы поместим в маркированный список:

          Подпункты мы разместим в отдельном списке, вложив его в элемент

        • , который содержит родительскую ссылку относительно подпунктов. Теперь мы имеем четкую структуру нашей будущей панели навигации:

          Попробовать »

          Теперь приступим к написанию CSS кода. Для начала необходимо скрыть список с подпунктами с помощью объявления display: none;, чтобы они не отображались на веб-странице все время. Для отображения подпунктов нам нужно чтобы при наведении на элемент

        • список снова был преобразован в блочный элемент:

          #navbar ul { display: none; } #navbar li:hover ul { display: block; }

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

          #navbar, #navbar ul { margin: 0; padding: 0; list-style-type: none; } #navbar li { float: left; } #navbar ul li { float: none; }

          Затем нам нужно сделать так, чтобы наше выпадающее подменю не смещало контент, расположенный под панелью навигации, вниз. Для этого мы зададим пунктам списка position: relative; , а списку, содержащему подпункты position: absolute; и добавим свойство top со значением 100%, чтобы абсолютно позиционированное подменю отображалось точно под ссылкой.

          #navbar ul { display: none; position: absolute; top: 100%; } #navbar li { float: left; position: relative; } #navbar { height: 30px; } Попробовать »

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

          Теперь нам осталось стилизовать оба наших списка и выпадающее меню будет готово:

          #navbar ul { display: none; background-color: #f90; position: absolute; top: 100%; } #navbar li:hover ul { display: block; } #navbar, #navbar ul { margin: 0; padding: 0; list-style-type: none; } #navbar { height: 30px; background-color: #666; padding-left: 25px; min-width: 470px; } #navbar li { float: left; position: relative; height: 100%; } #navbar li a { display: block; padding: 6px; width: 100px; color: #fff; text-decoration: none; text-align: center; } #navbar ul li { float: none; } #navbar li:hover { background-color: #f90; } #navbar ul li:hover { background-color: #666; }

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

          В чем отличия

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

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

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

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

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

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

          Главная Услуги Контакты Отзывы

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

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

          Тут нам придется преобразовывать наши пункты в блочные элементы. Для этого им нужно записать свойство:

          display : block ;

          Теперь они идут сверху вниз, то есть наша навигация стала вертикальной. Чтобы вновь превратить ее в горизонтальную, нужно добавить определенные свойства. Например, вместо блочного типа определить для них блочно-строчный, либо задать им (float: left). Читайте подробнее об этих способах .

          Вертикальная навигация

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

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

          a{ text-decoration: none; color: #fff; padding: 5px; font-size: 22px; display: block; background: linear-gradient(to right, rgba(96,108,136,1) 0%,rgba(63,76,107,1) 100%); width: 200px; text-align: center }

          text - decoration : none ;

          color : #fff;

          padding : 5px ;

          font - size : 22px ;

          display : block ;

          background : linear - gradient (to right , rgba (96 , 108 , 136 , 1 ) 0 % , rgba (63 , 76 , 107 , 1 ) 100 % ) ;

          width : 200px ;

          text - align : center