Css menu горизонтальное. Горизонтально центрированное меню с использованием только CSS

Спецификация

Описание

Тег

предназначен для отображения списка пунктов меню. Аналогично тегам
    и
      внутри контейнера список формируется с помощью тегов
    • .

      В HTML4 тег

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

        Синтаксис

        HTML
      • пункт меню
      • пункт меню
      • HTML5 ...

        Атрибуты

        Устанавливает видимую метку для меню. Задает тип меню.

        Закрывающий тег

        Обязателен.

        Валидация

        Использование этого тега осуждается спецификацией HTML4, валидный код получается только при использовании переходного . В HTML5 применение тега

        корректно.

        HTML 4.01 IE Cr Op Sa Fx

        Тег MENU

        В этом выпуске:

      • Русская кухня. Уха бурлацкая
      • Украинская кухня. Вареники
      • Молдавская кухня. Паприкаш
      • Кавказская кухня. Суп-харчо
      • Прибалтийская кухня. Вертиняй
      • Результат данного примера показан на рис. 1.

        Рис. 1. Вид списка, созданного с помощью тега

        HTML5 IE Cr Op Sa Fx

        Тег MENU

      • От автора: приветствую вас на нашем блоге о сайтостроении. Это цикл статей, посвященный новой спецификации и сегодня я бы хотел вам рассказать, как сделать в 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

        Если ваш веб-сайт не ограничивается одной веб-страницей, то стоит подумать о добавлении панели навигации (меню). Меню - раздел веб-сайта, предназначенный помогать посетителю перемещаться по сайту. Любое меню представляет собой список ссылок, ведущих на внутренние страницы сайта. Самым простым способом добавить панель навигации на сайт является создание меню с помощью 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; }

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

        Название документа

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

        При наведении курсора мыши на пункт меню его внешний вид может изменяться, привлекая к себе внимание пользователя. Создать такой эффект можно с помощью псевдо-класса: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; }

        Хабр, привет!

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

        Раньше я их выкладывал в группе продукта облачной IDE mr. Gefest , это были сборки из 5-8 решений. Но теперь у меня стало скапливаться по 15-30 скриптов в разных тематиках (кнопки, меню, подсказки и так далее).

        Такие большие наборы следует показывать большему числу специалистов. Поэтому выкладываю их на Хабр. Надеюсь они будут Вам полезны.

        В этом обзоре мы рассмотрим многоуровневые меню.

        Flat Horizontal Navigation

        Красивая навигационная панель с плавно появляющимся подменю. Код хорошо структурирован, используется js. Судя по использованным возможностям, работает в ie8+.
        http://codepen.io/andytran/pen/kmAEy

        Material Nav Header w/ Aligned Dropdowns

        Адаптивная панель ссылок с двухколонным подменю. Все сделано на css и html. Применены css3 селекторы, которые не поддерживаются в ie8.
        http://codepen.io/colewaldrip/pen/KpRwgQ

        Smooth Accordion Dropdown Menu

        Стильное вертикальное меню с плавно раскрывающимися элементами. Используется transition, transform js-код.
        http://codepen.io/fainder/pen/AydHJ

        Pure CSS Dark Inline Navigation Menu

        Темная вертикальная навигационная панель с иконками из ionicons. Применяется javascript. В ie8 скорее всего будет работать без анимации.
        http://codepen.io/3lv3n_snip3r/pen/XbddOO

        Pure CSS3 Mega Dropdown Menu With Animation

        Стильное меню с двумя форматами вывода: горизонтальным и вертикальным. Используются иконки и css3-анимация. В ie8 точно будет ужасно выглядеть, но зато в других браузерах все круто.
        Ссылка на вертикальную: http://codepen.io/rizky_k_r/full/sqcAn/
        Ссылка на горизонтальную: http://codepen.io/rizky_k_r/pen/xFjqs

        CSS3 Dropdown Menu

        Горизонтальное меню с большими элементами и выпадающим списком ссылок. Чистый и минималистичный код без js.
        http://codepen.io/ojbravo/pen/tIacg

        Simple Pure CSS Dropdown Menu

        Простое, но стильное горизонтальное меню. Используется font-awesome. Все работает на css и html, без js. В ie8 будет работать.
        http://codepen.io/Responsive/pen/raNrEW

        Bootstrap 3 mega-dropdown menu

        Отличное решение для интернет-магазинов. Отображает несколько уровней категорий и большие изображения (например, товар по акции). В его основе лежит boostrap 3.
        http://codepen.io/organizedchaos/full/rwlhd/

        Flat Navigation

        Стильная навигационная панель с плавным подменю. В старых браузерах отобразится с проблемами.
        http://codepen.io/andytran/pen/YPvQQN

        3D nested navigation

        Горизонтальное меню с очень крутой анимацией без js!
        http://codepen.io/devilishalchemist/pen/wBGVor

        Responsive Mega Menu - Navigation

        Горизонтальное адаптивное меню. Выглядит неплохо, но мобильная версия немного "хромает". Используется css, html и js.
        http://codepen.io/samiralley/pen/xvFdc

        Pure Css3 Menu

        Оригинальное меню. С простым и чистым кодом без js. Применяйте для "вау" эффектов.
        http://codepen.io/Sonick/pen/xJagi

        Full CSS3 Dropdown Menu

        Красочное выпадающее меню с одним уровнем вложенности. Используются иконки из font-awesome, html и css.
        http://codepen.io/daniesy/pen/pfxFi

        Css3 only dropdown menu

        Достаточно неплохое горизонтальное меню с тремя уровнями вложенности. Работает без js.
        http://codepen.io/riogrande/pen/ahBrb

        Dropdown Menus

        Минималистичное меню с оригинальным эффектом появления вложенного списка элементов. Радует, что это решение тоже без javascript.
        http://codepen.io/kkrueger/pen/qfoLa

        Pure CSS DropDown Menu

        Примитивное, но эффективное решение. Только css и html.
        http://codepen.io/andornagy/pen/xhiJH

        Pull Menu - Menu Interaction Concept

        Интересный концепт меню для мобильного телефона. Я такого ещё не видел. Используется html, css и javascript.
        http://codepen.io/fbrz/pen/bNdMwZ

        Make Simple Dropdown Menu

        Чистый и простой код, без js. В ie8 точно работать будет.
        http://codepen.io/nyekrip/pen/pJoYgb

        Pure CSS dropdown

        Решение неплохое, но слишком уж много используется классов. Радует, что нет js.
        http://codepen.io/jonathlee/pen/mJMzgR

        Dropdown Menu

        Симпатичное вертикальное меню с минимальным javascript-кодом. JQuery не используется!
        http://codepen.io/MeredithU/pen/GAinq

        CSS 3 Dropdown Menu

        Горизонтальное меню с дополнительными подписями может хорошо украсить Ваш сайт. Код простой и понятный. Javascript не применяется.
        http://codepen.io/ibeeback/pen/qdEZjR

        Красивое решение с большим количеством кода (html, css и js). Придумано 3 формата подменю. Для интернет-магазинов решение хорошо подходит.
        http://codepen.io/martinridgway/pen/KVdKQJ

        CSS3 Menu Dropdowns (особенное решение)!

        Темное горизонтальное меню с тринадцатью (13) вариантами анимации! Обязательно советую ознакомиться, пригодится в быту.
        http://codepen.io/cmcg/pen/ofFiz

        П.С.
        Надеюсь, Вам понравилась сборка из 23 решений. Если хотите и дальше их читать, то пройдите снизу опрос.
        Всем приятной работы.

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

        Разработчики интернет-магазинов, блогов, обучающих сервисов и других ресурсов экспериментируют и создают все более новые и необычные карты. После прочтения статьи вы узнаете, на какие основные группы делятся все виды панелей навигации, сможете опробовать каждую из них, а также научиться писать код меню для сайта html. А теперь перейдем непосредственно к делу!

        Инструменты для создания панели навигации

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

          и
        • .

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

            создает маркированный список, а
          • — один элемент списка. Для наглядности давайте напишем код простого меню:

            Навигация

            Навигация сайта

            • Главная
            • Новости недели
            • Технологические достижения
            • Чат

            Однако с появлением платформы язык разметки пополнился дополнительными тегами. Именно поэтому меню современных веб-сайтов создается при помощи специального тега < menu> . В использовании этот элемент ничем не отличается от маркированных списков.

            Вместо единицы < ul> прописывается < menu> . Однако существенные различия появляются если судить со стороны работы . Так, второй пример ускоряет работу поисковых программ и роботов в . При анализе структуры сайта они сразу понимают, что данный кусок кода отвечает за карту сайта.

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

            Создадим-ка горизонтальную навигационную модель

            Такой вид навигации наиболее популярен. При горизонтальном оформлении панели все пункты меню расположены в шапке страницы или в «подвале» (иногда навигационные элементы дублируются, отображаясь одновременно и сверху, и снизу).

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

            Для трансформации мы используем свойство css под названием transform . Чтобы указать трансформацию, используется встроенная функция skewX , в которой угол наклона указывается в градусах.

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

            • -ms- (Internet Explorer)
            • -o- (Opera)
            • -webkit- (Chrome, Safari)
            • -moz- (Firefox)

            А теперь полученные знания применим к написанию примера.

            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 Горизонтальная панель
          • Главная
          • О компании
          • Продукция
          • Контакты
          • Горизонтальная панель

          • Главная
          • О компании
          • Продукция
          • Контакты
          • А теперь вертикально. Я сказал вертикально!

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

            Для этого я воспользовался еще одним свойством css border-radius .

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

            Вертикальная панель

          • Главная
          • О компании
          • Продукция
          • Контакты
          • Как вы уже заметили, главное изменение в этом коде – это отсутствие объявления display: inline-block , который собственно и отвечал за горизонтальное расположение пунктов навигации.

            Подпункты в меню: выпадающий список

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

            Иногда возникают такие ситуации, когда некоторые из пунктов дополняют основные. В этом случае не обойтись без выпадающих списков. Они создаются путем преобразований инструментами 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 61 62 63 64 65 Выпадающий список

            Выпадающий список

            В данном примере я разделил единицы меню на два класса:

            1. m-menu
            2. s-menu

            Первый класс отвечает за основное меню, а s-menu – за подменю.

            В коде можно встретить такой прием, как .m-menu > li:hover или .m-menu > li.

            Так, при помощи:hover указывается, как будет вести себя элемент при наведении на него курсора.

            При этом знак «>» видоизменяет селектор так, чтобы блочно-строчными были только объекты, относящиеся к верхнему уровню.

            Изначально подменю было задано display: none , что оповещает обработчик скрывать данный объект. После наведения на элемент навигации с указанием hover , значение свойства display меняется на block и поэтому открывается выпадающий список.

            Как видите, реализация такого приема очень простая.

            Теперь вы освоили основные виды навигационных панелей и можете самостоятельно их видоизменять, дополнять и модернизировать. Если вам понравилась моя статья, то подписывайтесь на обновления блога и делитесь источником знаний с друзьями и коллегами. Пока-пока!

            С уважением, Роман Чуешов

            Прочитано: 1010 раз