Содержание

Плавно открывающееся меню с помощью CSS. Вертикальное выпадающее меню на css: как его сделать

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

План урока и разметка нашего меню

В общем-то, сначала определимся с тем, как будем создавать само меню. В html5 стандартным способом считается создавать его в контейнере nav с помощью маркированного списка. Давайте именно так и сделаем. Маркеры мы позже уберем с помощью css, в меню они нам совершенно не нужны.

Собственно, я сразу напишу в html разметку с вложенными списками. То есть наши список будет двухуровневым – в нем будут другие списки. А именно, на каждый пункт 1 список, который и будет формировать выпадающее меню.

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

Собственно, вот она, вся разметка:

Пункт1

Подпункт

Подпункт

Подпункт

Пункт2

Подпункт

Подпункт

Подпункт

Пункт3

Подпункт

Подпункт

Подпункт

Пункт4

Подпункт

Подпункт

Подпункт

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

Собственно, я задал всей навигации идентификатор nav, а всем вложенным спискам – стилевой класс second, чтобы понимать, что они являются вложенными.

Отлично, разметка у нас готова, можно посмотреть на результат:

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

Пишем css-стили

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

*{ margin: 0; padding: 0; }

margin : 0 ;

padding : 0 ;

#nav{ height: 70px; } #nav ul{ list-style: none; }

#nav{

height : 70px ;

#nav ul{

list — style : none ;

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

#nav > ul > li{ float: left; width: 180px; position: relative; }

#nav > ul > li{

float : left ;

width : 180px ;

position : relative ;

Заметьте, что с помощью знака > мы обращаемся к пунктам списка, который непосредственно вложены в ul, а тот непосредственно вложен в nav. Это очень важно, так как позволяет не применить стиль к пунктам вложенных списков. Дело в том, что по моей задумке в главном списке пункты будут располагаться горизонтально, а во вложенных – вертикально.

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

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

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

Тем временем, вот что у нас уже получилось:

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

#nav li a{ display: block; background: #90DA93; border: 1px solid #060A13; color: #060A13; padding: 8px; text-align: center; text-decoration: none; } #nav li a:hover{ background: #2F718E; }

#nav li a{

display : block ;

background : #90DA93;

border : 1px solid #060A13;

color : #060A13;

padding : 8px ;

text — align : center ;

text — decoration : none ;

#nav li a:hover{

background : #2F718E;

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

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

Заметьте, что в данном случае мы не использовали знак >, поэтому указанные правила применятся ко всем ссылкам, в том числе и тем, что находятся во вложенных пунктах. Итак, теперь имеем следующее:

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

#nav li .second{ display: none; position: absolute; top: 100%; }

#nav li .second{

display : none ;

position : absolute ;

top : 100 % ;

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

Теперь мы видим на веб-странице только основное меню, что нам и нужно.

Реализуем выпадение

Нам осталось сделать самое главное – реализовать само выпадение. В этом нет ничего сложного, смотрите на этот код:

#nav li:hover .second{ display: block; }

#nav li:hover .second{

display : block ;

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

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

#nav li li{ width: 180px; }

#nav li li{

width : 180px ;

Все, проблема решена:

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

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

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

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

Теперь остается изменить правила для селектора #nav li .second, то есть для вложенных списков, а именно, их нужно немного по-другому позиционировать. Вот так:

#nav li .second{ display: none; position: absolute; left: 100%; top: 0; }

#nav li .second{

display : none ;

position : absolute ;

left : 100 % ;

top : 0 ;

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

Поэтому изменяем top: 100% на left: 100%. Кроме этого, координата top нам тоже нужна. Задаем ей 0, чтобы вложенное меню находилось на одном уровне с пунктом, которому соответствуют.

Все, теперь все работает так, как надо. Можете протестировать. Как видите, я не врал, когда говорил, что придется переписать всего несколько строк кода.

Горизонтальное меню с несколькими уровнями

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

Михаил сб, 09/20/2014 — 12:28

Что-то мой комментарий не виден — дублирую:

===========
Спасибо, но у меня (под Инт.Экспл-8) меню не выпадает. Т.е. не работает строка «ul.nav li:hover ul {display: block;}»

Подскажите, в чем дело?

Есть пожедания по изложению материала:

Хорошо бы в этой строке (ul.aaaaa li:hover ul {display: block;}) растолковать, какая ее часть отвечает за «выпадение меню», а какая — за скрывание пунктов более глубокого уровня вложенности

Хорошо бы в примерах каждую строку снабжать комментарием, что она делает.

В частности, неясно, зачем нужна строка «

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

Навигация в виде выпадающего меню может применяться при большом количестве ссылок, для экономии места на странице. Выпадающее вертикальное меню корректно отображается в браузерах Firefox, Opera и Internet Explorer. Автор меню мне неизвестен, поэтому и ссылки на оригинал не имеется.

<!—[if gte IE 5.5]>
<script language=»JavaScript» src=»nav-h.js» type=»text/JavaScript»></script>
<![endif]—>

Скачать JavaScript

<ul>
<li><a href=»index.html»>Главная</a></li>
<li><a href=»templates.html»>Шаблоны, рецепты +</a>
<ul>
<li><a href=»templates.html»>Шаблоны, заготовки +</a>
<ul>
<li><a href=»temp1.html»>Шаблон 1</a></li>
<li><a href=»temp2.html»>Шаблон 2</a></li>
<li><a href=»temp3.html»>Шаблон 3</a></li>
<li><a href=»temp4.html»>Шаблон 4</a></li>
<li><a href=»temp5.html»>Шаблон 5</a></li>
<li><a href=»temp6.html»>Шаблон 6</a></li>
<li><a href=»temp7.html»>Шаблон 7</a></li>
<li><a href=»temp8.html»>Шаблон 8</a></li>
</ul>
</li>
<li><a href=»faq.html»>Рецепты HTML</a></li>
<li><a href=»faq-css.html»>Рецепты CSS</a></li>
</ul>
</li>
<li><a href=»#»>Менюшки +</a>
<ul>
<li><a href=»#»>Вертикальные +</a>
<ul>
<li><a href=»menu1.html»>Вертикальное меню 1</a></li>
<li><a href=»menu2.html»>Вертикальное меню 2</a></li>
<li><a href=»menu3.html»>Вертикальное меню 3</a></li>
<li><a href=»menu4.html»>Вертикальное меню 4</a></li>
<li><a href=»menu5.html»>Вертикальное меню 5</a></li>
</ul>
</li>
<li><a href=»#»>Горизонтальные +</a>
<ul>
<li><a href=»menu6.html»>Горизонтальное меню 1</a></li>
<li><a href=»menu7.html»>Горизонтальное меню 2</a></li>
<li><a href=»menu8.html»>Горизонтальное меню 3</a></li>
</ul>
</li>
</ul>
</li>
<li><a href=»/gb»>Гостевая книга</a></li>
<li><a href=»submit.html»>Контакт</a></li>
</ul>

ul#navmenu-v,
ul#navmenu-v li,
ul#navmenu-v ul {
margin: 0;
border: 0 none;
padding: 0;
width: 160px;
list-style: none;
}

ul#navmenu-v:after {
clear: both;
display: block;
font: 1px/0px serif;
content: «.»;
height: 0;
visibility: hidden;
}

ul#navmenu-v li {
float: left;
display: block !important;
display: inline;
position: relative;
}

ul#navmenu-v a {
border: 1px solid #FFF;
border-right-color: #527337;
border-bottom-color: #527337;
padding: 0 6px;
display: block;
background: #A2C585;
color: #666;
font: bold 10px/22px Verdana, Arial, Helvetica, sans-serif;
text-decoration: none;
height: auto !important;
height: 1%;
}

ul#navmenu-v a:hover,
ul#navmenu-v li:hover a,
ul#navmenu-v li.iehover a {
background: #648B43;
color: #FFF;
}

ul#navmenu-v li:hover li a,
ul#navmenu-v li.iehover li a {
background: #648B43;
color: #BCD6A7;
}

ul#navmenu-v li:hover li a:hover,
ul#navmenu-v li:hover li:hover a,
ul#navmenu-v li.iehover li a:hover,
ul#navmenu-v li.iehover li.iehover a {
background: #648B43;
color: #FFF;
}

ul#navmenu-v li:hover li:hover li a,
ul#navmenu-v li.iehover li.iehover li a {
background: #648B43;
color: #BCD6A7;
}

ul#navmenu-v li:hover li:hover li a:hover,
ul#navmenu-v li:hover li:hover li:hover a,
ul#navmenu-v li.iehover li.iehover li a:hover,
ul#navmenu-v li.iehover li.iehover li.iehover a {
background: #648B43;
color: #FFF;
}

ul#navmenu-v li:hover li:hover li:hover li a,
ul#navmenu-v li.iehover li.iehover li.iehover li a {
background: #648B43;
color: #BCD6A7;
}

ul#navmenu-v li:hover li:hover li:hover li a:hover,
ul#navmenu-v li.iehover li.iehover li.iehover li a:hover {
background: #648B43;
color: #FFF;
}

ul#navmenu-v ul,
ul#navmenu-v ul ul,
ul#navmenu-v ul ul ul {
display: none;
position: absolute;
top: 0;
left: 160px;
}

ul#navmenu-v li:hover ul ul,
ul#navmenu-v li:hover ul ul ul,
ul#navmenu-v li.iehover ul ul,
ul#navmenu-v li.iehover ul ul ul {
display: none;
}

ul#navmenu-v li:hover ul,
ul#navmenu-v ul li:hover ul,
ul#navmenu-v ul ul li:hover ul,
ul#navmenu-v li.iehover ul,
ul#navmenu-v ul li.iehover ul,
ul#navmenu-v ul ul li.iehover ul {
display: block;
}

Как сделать плавное выпадающее меню на CSS. Вертикальное выпадающее меню на css: как его сделать

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

Первым делом, давайте напишем HTML код нашего меню. Меню будет простейшим. Для примера у него будет 2 пункта у каждого из которых будет выпадающий список с подпунктами.

  • пункт 1
    • Выпадающий пункт 1
    • Выпадающий пункт 2
    • Выпадающий пункт 3
  • пункт 2
    • Выпадающий пункт 1
    • Выпадающий пункт 2
    • Выпадающий пункт 3

Думаю тут все понятно, самое простое 2-х уровневое меню. Как и говорил, меню имеет два главных пункта, можете добавить сколько угодно, если нужно. Дальше нужно просто добавить стили, которые и сделают всю магию 🙂

#slow_nav > ul{ width: 500px; margin:25px auto 0; } #slow_nav > ul > li{ list-style: none; display: inline-block; position:relative; padding:0; } #slow_nav a{text-decoration:none;} #slow_nav > ul > li > a{ font-size:18px; padding:5px; background-color:#333; color:#fff; } #slow_nav li ul{ position:absolute; list-style:none; text-align:center; top:15px; font-size:15px; left:0; margin:0; padding:0; /* Данные строки нужны для правильной работы анимации */ max-height:0px; overflow:hidden; -webkit-transition:max-height 0.4s linear; -moz-transition:max-height 0.4s linear; transition:max-height 0.4s linear; /* конец */ } #slow_nav li:hover ul{ max-height:300px; } #slow_nav li ul li{ background-color:#333; border-bottom:1px solid #888; } #slow_nav li ul li:last-child{ border-bottom:none; } #slow_nav li ul li a{ padding:5px 12px; color:#fff; display:block; } #slow_nav li ul li:hover{ background-color:#444; } #slow_nav li ul li:first-child{ margin-top:25px; position:relative; } #slow_nav li ul li:first-child:before{ content:»»; position:absolute; width:1px; height:1px; border:5px solid transparent; border-bottom-color:#333; left:10px; top:-10px; }

Код CSS не маленький., но по своей сути не сложный. Если Вы владеете навыками верстки, то запросто разберетесь что и как. Я лишь остановлюсь на некоторых моментах, которые являются важными.

Первым делом это сама анимация. Нужный код выделен комментариев в коде — /* Данные строки нужны для правильной работы анимации */ . Удалять из нельзя, в противном случаи анимация перестанет работать. В данном отрезке кода, изначально мы задаем высоту в ноль пикселей —

max-height:0px; и прописываем свойство overflow:hidden; , чтобы скрыть наше дочернее меню, то есть выпадающее. Дальше уже прописываем кроссбраузерное свойство transition , которое совершит анимацию.

Webkit-transition:max-height 0.4s linear; -moz-transition:max-height 0.4s linear; transition:max-height 0.4s linear;

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

#slow_nav li:hover ul{ max-height:300px; }

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

Данный способ можно применять не только к самописным меню но и к тем же динамическим меню, которые создаются системами управления сайтом, например WordPress . Для этого нужно немного подправить стили и все. То есть первый HTML код использовать не нужно, только стили. В стилях нужно заменить имя айди #slow_nav на то что будет у Вас, ну и возможно подправить еще что-то по мелочам. Подробно останавливаться не буду. Для каждого случая нужен персональный подход, так что уж извините 🙂 Я дал идею и способ, а Вам решать, применять его или нет.

На этом все, спасибо за внимание. 🙂

Задача

Создать выпадающее меню инструментами CSS и HTML.

Решение

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

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

У нас получился список такого вида:

Рисунок 1. Подготовительные работы.

Обратите внимание: стиль ссылки меняется при наведении на неё курсора. Это реализовывается с помощью псевдокласса :hover . Этот псевдокласс задаёт стиль элемента при наведении на него курсора, при этом кнопка мыши не нажата. Если есть нажатие кнопки — это уже другой псевдокласс.

Теперь перейдём к решению нашей задачи. Сделаем выпадающее меню для пункта «Услуги», добавим выпадающие разделы: «Купить», «Продать», «Обменять». Эти пункты — это отдельный список, который вложен в тег

  • Создадим этот список и добавим стили, описывающие его внешний вид.

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

    Теперь у нас получился такой список:

    Рисунок 2. Подготовительные работы.

    Безусловно, это не то, что нам нужно. По умолчанию этот список должен быть скрыт и становиться видимым только при наведении мыши. Скрыть элемент можно при помощи правила правила {display : none }. А при наведении курсора его нужно активировать сделав снова видимым правила {display : inline-block }.

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

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

    Чтобы элемент отображался не влияя на отображение других элементов, его нужно спозиционировать со значением absolute .

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

    Что мы тут сделали:

    1. правило позиционирования {position : relative ;}. Это сделано для того, чтобы отчёт координат абсолютного позиционирования вложенного списка начался с верхнего левого угла этого блока, а не угла экрана.
    2. Добавили в родительский элемент
    3. правило {height : 20px ;}. Задали ему высоту, чтобы удобней было позиционировать выпадающий список.
    4. Установили абсолютное позиционирование {position : absolute ;} выпадающему списку и установили координаты: top и left .

    Теперь выпадающее меню работает корректно.

    Рисунок 3. Окончательный вариант.

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

    Учебная задача решена. Пока.

    Горизонтальное выпадающее меню написано на HTML и CSS. Код HTML и стили CSS лаконичны, просты и понятны. Всего строк CSS стилей, не считая пробельные, меньше 50. В HTML удобно добавлять новые пункты и подпункты. Немного изменив CSS стили можно сделать несколько тем и изменить вид или способ появления подпунктов (темы оранжевая, сиреневая, коричневая).
    Основное отличие моего решения в том, что я не использую списки – теги

      и
    • , заменив их на простые , а применение CSS3 flexbox — нового элемента CSS3 — значительно упростило написание и читаемость HTML кода и CSS стилей, сократив при этом их объём.

      Ниже приведён рабочий пример горизонтального выпадающего меню на CSS.

      Идея заключается в следующем: горизонтальное выпадающее меню создаётся как набор колонок. Колонка представляет собой стопку подпунктов.
      Непосредственно горизонтальное меню складывается из верхних элементов стопки. Схематично это выглядит так:

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

      В обёртку

      Рекомендуем почитать
  • Как создать выпадающее меню CSS?

    В сегодняшней статье я хотел бы рассказать, как создать на CSS2.1 и HTML выпадающее меню. Также я покажу один небольшой трюк, при помощи которого можно будет добавлять иконку «+» к элементам навигации в том случае, если в них скрыто выпадающее меню. Для этого мы воспользуемся псевдоэлементом :only-child.

    Исходный код
    Демо

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

    <nav>
    			    <ul>
    			        <li><a href="#">Home</a></li>
    			        <li><a href="#">WordPress</a></li>
    			        <li><a href="#">Graphic Design</a></li>
    			        <li><a href="#">Inspiration</a></li>
    			        <li><a href="#">Contact</a></li>
    			        <li><a href="#">About</a></li>
    			    </ul>
    			</nav>

    Далее нам нужно добавить базовые CSS-стили для HTML горизонтального меню. Я оставил комментарии к каждому блоку кода:

    /* задаем цвет фона для контейнера nav. */
    			nav {
    			    margin: 100px 0;
    			    background-color: #E64A19;
    			}
    			
    			/* убираем отступы и поля, а также list-style для "ul", 
    			 * и добавляем "position:relative" */
    			nav ul {
    			    padding:0;
    			    margin:0;
    			    list-style: none;
    			    position: relative;
    			    }
    			
    			/* применяем inline-block позиционирование к элементам навигации */
    			nav ul li {
    			    margin: 0px -7px 0 0;
    			    display:inline-block;
    			    background-color: #E64A19;
    			    }
    			
    			/* стилизуем ссылки */
    			nav a {
    			    display:block;
    			    padding:0 10px;
    			    color:#FFF;
    			    font-size:20px;
    			    line-height: 60px;
    			    text-decoration:none;
    			}
    			
    			/* изменяем цвет фона при наведении курсора */
    			nav a:hover {
    			    background-color: #000000;
    		}

    После применения стилей у нас должно получиться нечто вроде этого:

    Чтобы добавить выпадающий список к какому-либо из элементов HTML меню, нам нужно добавить <ul> внутрь элемента <li> для пункта, в котором нужно скрыть выпадающий список:

    <nav>
    			    <ul>
    			        <li><a href="#">Home</a></li>
    			        <li><a href="#">WordPress</a>
    			
    			            <!-- первый уровень выпадающего списка -->
    			            <ul>
    			                <li><a href="#">Themes</a></li>
    			                <li><a href="#">Plugins</a></li>
    			                <li><a href="#">Tutorials</a></li>
    			            </ul>
    			
    			        </li>
    			        <li><a href="#">Graphic Design</a></li>
    			        <li><a href="#">Inspiration</a></li>
    			        <li><a href="#">Contact</a></li>
    			        <li><a href="#">About</a></li>
    			    </ul>
    		</nav>

    Мы добавили новый неупорядоченный список с тремя пунктами списка внутрь второго элемента <li>, который отвечает за пункт меню WordPress. Обратите внимание на то, что мы добавили <ul> после анкорного тега (<a>).

    Теперь добавим CSS-стили, чтобы выпадающий список был скрыт по умолчанию, и появлялся, когда посетитель наводит курсор мыши на соответствующий родительский элемент HTML меню для сайта. После приведенного выше CSS-кода добавьте следующий фрагмент:

    /* скрываем выпадающие списки по умолчанию
    			 * и задаем абсолютное позиционирование */
    			nav ul ul {
    			    display: none;
    			    position: absolute;
    			    top: 100%;
    			}
    			
    			/* отображаем выпадающий список при наведении */
    			nav ul li:hover > ul {
    			    display:inherit;
    			}
    			
    			/* первый уровень выпадающего списка */
    			nav ul ul li {
    			    min-width:170px;
    			    float:none;
    			    display:list-item;
    			    position: relative;
    			}

    Если до этого момента вы все делали правильно, то при наведении курсора на пункт меню «WordPress» должны увидеть выпадающий список с тремя другими пунктами («Themes», «Plugins», «Tutorials»):

    Чтобы добавить выпадающие списки, состоящие из нескольких уровней, этот процесс нужно повторить. Определяем пункт меню, из которого нужно сделать выпадающий список, и добавляем новый <ul> между тегами <li></li>.

    Взгляните на приведенный ниже HTML-код, в котором мы добавляем второй уровень выпадающего списка к пункту меню «Tutorial», который находится внутри пункта «WordPress»:

    <nav>
    			    <ul>
    			        <li><a href="#">Home</a></li>
    			        <li><a href="#">WordPress</a>
    			
    			            <!-- первый уровень выпадающего списка -->
    			            <ul>
    			                <li><a href="#">Themes</a></li>
    			                <li><a href="#">Plugins</a></li>
    			                <li><a href="#">Tutorials</a>
    			
    			                    <!-- второй уровень выпадающего списка -->
    			                    <ul>
    			                        <li><a href="#">Stuff</a></li>
    			                        <li><a href="#">Things</a></li>
    			                        <li><a href="#">Other Stuff</a></li>
    			                    </ul>
    			                    <!—конец второго уровня выпадающего списка -->
    			
    			                </li>
    			            </ul>
    			            <!—конец первого уровня выпадающего списка -->
    			
    			        </li>
    			        <li><a href="#">Graphic Design</a></li>
    			        <li><a href="#">Inspiration</a></li>
    			        <li><a href="#">Contact</a></li>
    			        <li><a href="#">About</a></li>
    			    </ul>
    		</nav>

    Чтобы вертикальное меню HTML отображалось корректно, нужно добавить еще пару строк CSS кода:

    /* второй, третий и последующие уровни 
    			 * смещаем 2 и 3 уровни влево 
    			 * на значение длины первого уровня.
    			*/
    			nav ul ul ul {
    			    position: absolute;
    			    top:0;
    			    left:100%;
    		}

    Если все сделано правильно, у вас должно получиться нечто вроде этого:

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

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

    Перед тем, как сделать выпадающее меню в HTML до конца, разберемся с индикатором, который указывает на наличие выпадающего списка, прикрепленного к тому или иному пункту меню (знак «+»):

    /* измените ' +' на любой другой символ, если нужно
    	*/
    			li > a:after { content:  ' +'; }
    		li > a:only-child:after { content: ''; }

    Для этого мы используем псевдоэлемент CSS3 (:only-child). В данном случае он проверяет, имеются ли в тегах <li> родительского элемента другие элементы. Если нет, то знак плюса просто убирается, так как по умолчанию он присутствует рядом со всеми пунктами. Видите + возле пунктов WordPress и Tutorials?

    Значит, вы все сделали правильно.

    В завершение

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

    А как вы сделали меню на HTML? Пожалуйста, расскажите об этом в комментариях.

    Данная публикация является переводом статьи «How to Create a Pure CSS Dropdown Menu» , подготовленная редакцией проекта.

    Горизонтальное выпадающее меню на CSS

    Вы здесь: Главная — CSS — CSS Основы — Горизонтальное выпадающее меню на CSS

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

    Привожу HTML-код:

    <ul>
      <li>
        <a href="#">Главная</a>
      </li>
      <li>
        <a href="#">Меню 1</a>
        <ul>
          <li>
            <a href="#">Подменю 1</a>
          </li>
          <li>
            <a href="#">Подменю 2</a>
          </li>
          <li>
            <a href="#">Подменю 3</a>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">Меню 2</a>
        <ul>
          <li>
            <a href="#">Подменю4</a>
          </li>
          <li>
            <a href="#">Подменю 5</a>
          </li>
          <li>
            <a href="#">Подменю 6</a>
          </li>
          <li>
            <a href="#">Подменю7</a>
          </li>
          <li>
            <a href="#">Подменю 8</a>
          </li>
        </ul>
      </li>
    </ul>

    И CSS-код:

    ul.menu {
      display: inline-block;
      margin: 0;
      padding: 0;
    }
    ul.menu li {
      float: left;
      list-style: none;
    }
    ul.menu li a {
      display: block;
      padding: 8px 20px 10px;
      text-decoration: none;
    }
    ul.menu li ul {
      display: none;
      padding-left: 10px;
    }
    ul.menu li:hover ul {
      display: block;
      position: absolute;
    }
    ul.menu li:hover ul li {
      float: none;
    }
    ul.menu li:hover ul li a {
      padding: 6px 0 8px;
    }

    Безусловно, здесь дан чуть ли не минимум свойств. Чтобы это всё украсить, нужно менять стили. Что касается HTML-кода, то он идентичен и для горизонтального, и для вертикального меню.

    Теперь у Вас не должно быть проблем с созданием горизонтального выпадающего меню на CSS.

    Полный курс по HTML, CSS и по вёрстке сайтов: http://srs.myrusakov.ru/makeup

    • Создано 06.03.2013 04:25:07
    • Михаил Русаков
    Предыдущая статья Следующая статья

    Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

      Она выглядит вот так:

    2. Текстовая ссылка:
      <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

      Она выглядит вот так: Как создать свой сайт

    3. BB-код ссылки для форумов (например, можете поставить её в подписи):
      [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

    Вертикальное раскрывающееся меню при наведении курсора с использованием CSS и HTML

    Введение

    В этой статье объясняется, как создать вертикальное раскрывающееся меню с помощью CSS и HTML.

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

    Его вывод будет примерно таким:

    Теперь мы увидим процедуру создания такого выпадающего меню.

    Шаг 1

    Прежде всего, добавьте таблицу стилей и форму или страницу HTML.

    Затем на HTML-странице или в веб-форме .NET добавьте «Div» и назовите его «divMenu».

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

      • Home1
        • Homea
        • Homeb
        • Homec
      • Home2
        • Homed
        • Homee
        • Homef
      • Home3
        • Homeg
        • Homeh
        • Homei
      • Home4
      • Home5
        • Homej
        • Homek
        • Homel
      • Home6

    Шаг 2

    Прямо сейчас ваш код — это не что иное, как

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

    Добавьте этот код в свою таблицу стилей:

    1. #divMenu, ul, li, li li {
    2. маржа: 0;
    3. отступ: 0;
    4. }
    5. #divMenu {
    6. ширина: 150 пикселей;
    7. высота: 27 пикселей;
    8. }
    9. #divMenu ul
    10. {
    11. высота строки: 25 пикселей;
    12. }
    13. #divMenu li {
    14. стиль списка: нет;
    15. позиция: относительная;
    16. фон: # 641b1b;
    17. }
    18. #divMenu li li {
    19. стиль списка: нет;
    20. позиция: относительная;
    21. фон: # 641b1b;
    22. слева: 148 пикселей;
    23. верх: -27 пикселей;
    24. }
    25. #divMenu ul li a {
    26. ширина: 148 пикселей;
    27. высота: 25 пикселей;
    28. дисплей: блочный;
    29. текстовое оформление: нет;
    30. выравнивание текста: по центру;
    31. Семейство шрифтов
    32. : Georgia, Times New Roman, с засечками;
    33. цвет: #ffffff;
    34. граница: сплошная 1px #eee;
    35. }
    36. #divMenu ul ul {
    37. позиция: абсолютная;
    38. видимость: скрыта;
    39. верх: 27 пикселей;
    40. }
    41. #divMenu ul li: hover ul {
    42. видимость: видимая;
    43. }
    44. #divMenu li: hover {
    45. цвет фона: # 945c7d;
    46. }
    47. #divMenu ul li: hover ul li a: hover {
    48. цвет фона: # 945c7d;
    49. }
    50. #divMenu a: hover {
    51. font-weight: жирный;
    52. }

    Здесь я использовал идентификатор

    , другими словами «divMenu».

    Теперь все изменится, и ваш результат будет совершенно другим и интересным.

    Выход

    HTML и CSS примеры раскрывающихся меню, которые вы можете использовать

    Выпадающее меню CSS — эффективное решение для улучшения пользовательского интерфейса и пользовательского интерфейса приложения или веб-сайта. Раскрывающееся меню — это подменю главного меню веб-сайта или приложения. Он используется для демонстрации кнопок содержимого (ссылок) для каждого родительского пункта меню.

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

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

    Автор: Зеландия

    Сделано с помощью: CSS, HTML

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

    Рекурсивная навигация при наведении курсора (только CSS)

    Автор: sean_codes

    Сделано с помощью: CSS, HTML

    Это раскрывающееся меню отображается при наведении курсора на главное меню.

    Автор: Кевин

    Сделано с помощью: CSS, HTML

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

    Простое раскрывающееся меню CSS с состояниями Hover и: focus-within и Focus и ARIA

    Автор: Уна Кравец

    Сделано с помощью: CSS, HTML

    Это простое раскрывающееся меню с минималистичным дизайном.

    Автор: Rlski

    Сделано с помощью: CSS, HTML

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

    Создавайте визуально привлекательные и высокопроизводительные веб-сайты без написания кода

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

    Примеры раскрывающегося меню для веб-сайтов и приложений

    Автор: Кристина Сильва

    Сделано с помощью: CSS, HTML

    Это раскрывающееся меню не включает JavaScript. Из четырех пунктов меню присутствует только одна раскрывающаяся кнопка класса div. Этот класс кнопки создает подменю, которое содержит три поля содержимого.

    Автор: Максим Агинский

    Сделано с помощью: CSS, HTML

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

    Автор: Amr SubZero

    Сделано с помощью: CSS, HTML

    Вот выпадающее меню CSS с освежающим цветом фона. Каждое подменю отображает раскрывающееся содержимое своего пункта главного меню.

    Автор: Гол Хамер

    Сделано с помощью: CSS, HTML

    С помощью этого простого параметра легко создать раскрывающееся меню.

    Автор: Джейми Колтер

    Сделано с помощью: CSS, HTML

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

    Автор: Джон Белла

    Сделано с помощью: CSS, HTML

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

    Автор: Роберт Боргези

    Сделано с помощью: CSS, HTML

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

    Автор: Коннор Брассингтон

    Сделано с помощью: CSS, HTML

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

    Автор: Керем Беязит

    Сделано с помощью: CSS, HTML

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

    Автор: Kitty giraudel

    Сделано с помощью: CSS, HTML

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

    Автор: Гарет МакКинли

    Сделано с помощью: CSS, HTML

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

    Автор: Разван Тудоса

    Сделано с помощью: CSS, HTML

    Это раскрывающееся меню CSS, созданное с эффектом анимации складывания бумаги.

    Автор: Хью Бальбоа

    Сделано с помощью: HTML, CSS

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

    Раскрывающийся список на чистом CSS [работает для сенсорных экранов мобильных устройств]

    Автор: Джонат Ли

    Сделано с помощью: HTML, CSS

    Это раскрывающееся меню CSS хорошо подходит для устройств с сенсорным экраном.Он был протестирован на :

    1. Chrome Canary
    2. Chrome PC
    3. IE10 PC
    4. Эмулятор Android
    5. Firefox PC
    6. И смартфон Android 5

    Автор: Алексей Попков

    Сделано с помощью: CSS, HTML

    Раскрывающееся меню во всю ширину. Подменю остаются под своими родительскими элементами.

    Автор: Каролина Ханссон

    Сделано с помощью: HTML, CSS

    При использовании этого параметра текст меню становится синим и подчеркивается при наведении курсора.Пункт меню «О программе» раскрывается, чтобы открыть отображение трех дополнительных элементов в виде встроенного блока.

    MainMenu #CodePenChallenge

    Автор: Мохамед Айман

    Сделано с помощью: HTML, CSS

    Это красивое и красочное горизонтальное выпадающее меню.

    Автор: Дэн Матисен

    Сделано с помощью: HTML, CSS

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

    Автор: Jenning

    Сделано с помощью: HTML, CSS

    Этот простой дизайн имеет мягкий цвет фона.

    Автор: Халида Астатин

    Сделано с помощью: HTML, CSS

    Адаптивное раскрывающееся меню с красивыми цветами.

    Автор: Николас Галлер

    Сделано с помощью: HTML, CSS

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

    Автор: Dr.Web

    Сделано с помощью: HTML, CSS

    Этот пример идеально подходит для разработки веб-сайта.

    Автор: Марио Лонкарек

    Сделано с помощью: HTML, CSS

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

    Автор: Андор Надь

    Сделано с помощью: HTML, CSS

    Это простой пример раскрывающегося меню.

    Автор: Ахмад Наср

    Сделано с помощью: HTML, CSS

    Горизонтальное выпадающее меню CSS с красивым цветом фона и красивым анимационным эффектом.

    Автор: Марко Бесаньи

    Сделано с помощью: HTML, CSS

    Этот стиль дизайна прост и имеет идеальный размер шрифта для каждого пункта меню.

    Автор: Майк Рохас

    Сделано с помощью: HTML, CSS

    Это раскрывающееся меню имеет привлекательный зеленый цвет фона с белым текстом.

    Автор: Руслан Пивоваров

    Сделано с помощью: HTML, CSS

    Этот вариант идеально подходит для веб-сайтов с классным CSS-дизайном.

    Автор: Каталин Рошу

    Сделано с помощью: HTML, CSS

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

    Автор: Джон Урбанк

    Сделано с помощью: HTML, CSS

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

    Простой раскрывающийся список CSS

    Автор: Доан Хопкинс

    Сделано с помощью: HTML, CSS

    Вот простое многоуровневое раскрывающееся меню CSS.

    Автор: Сатиш Кумар

    Сделано с помощью: HTML, CSS

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

    Автор: Адам Кун

    Сделано с помощью: HTML, CSS

    Это классное анимированное раскрывающееся меню выглядит как оранжевый макет с подменю, включающим креативный символ в рамке.Код можно настроить так, чтобы он включал в себя символы оформления текста вашего клиента.

    Автор: Guil H

    Сделано с помощью: HTML, CSS

    Классное выпадающее меню с настраиваемым кодом.

    Автор: Эрик Мюссер

    Сделано с помощью: HTML, CSS

    Яркие цвета этого варианта оживят сайт вашего клиента.

    Автор: Винсент Дюран

    Сделано с помощью: HTML, CSS

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

    Автор: Анастасия П

    Сделано с помощью: HTML, CSS

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

    Завершение мыслей об этих раскрывающихся меню HTML и CSS

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

    Итак, не сомневайтесь.Выберите стильное раскрывающееся меню из этого списка.

    Если вам понравилось читать эту статью о раскрывающихся меню CSS, вам следует ознакомиться с этой статьей о формах HTML и CSS.

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

    Многоуровневые выпадающие меню навигации: примеры и учебные пособия

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

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

    Вы также можете проверить эти сообщения:

    Горизонтальные и вертикальные раскрывающиеся меню

    1) Раскрывающиеся вкладки (5 стилей)

    Drop Down Tabs — это горизонтальное меню вкладок CSS, которое поддерживает раскрывающееся меню второго уровня для каждой из своих вкладок.

    2) Профессиональное раскрывающееся меню

    3) Многоуровневое меню эффектов

    — это настраиваемое гибридное раскрывающееся меню javascript / css, способное создавать простые меню (как горизонтальные, так и вертикальные).

    4) Меню FastFind

    Вложенные меню jQuery, основанные на динамических ответах «AJAX». Меню также можно перетаскивать.

    5) jQuery SuckerFish

    Копирование меню Suckerfish.

    6) Необычное скользящее меню вкладок с использованием script.aculo.us

    7) Меню на основе списка с изображениями

    Это меню, основанное на неупорядоченном списке (