Выпадающее меню на чистом css / html

Создание всплывающего раскрывающегося списка

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

Шаг 1) добавить HTML:

Пример

<div class=»dropdown»>  <button class=»dropbtn»>Dropdown</button> 
<div class=»dropdown-content»>    <a href=»#»>Link
1</a>   
<a href=»#»>Link 2</a>    <a href=»#»>Link 3</a>  </div></div>

Пример как работает

Используйте любой элемент, чтобы открыть раскрывающееся меню, например <Button>, <a> или <p> элемент.

Используйте элемент контейнера (например, <div>) для создания раскрывающегося меню и добавления раскрывающихся ссылок внутри него.

Оберните элемент <div> вокруг кнопки и <div>, чтобы правильно расположить раскрывающееся меню с помощью CSS.

Шаг 2) добавить CSS:

Пример

/* Dropdown Button */.dropbtn {   
background-color: #4CAF50;    color: white;   
padding: 16px;    font-size: 16px;   
border: none;}/* The
container <div> — needed to position the dropdown content */.dropdown {    position: relative;    display:
inline-block;}/* Dropdown Content (Hidden by Default) */
.dropdown-content {    display: none;    position:
absolute;    background-color: #f1f1f1;   
min-width: 160px;    box-shadow:
0px 8px 16px 0px rgba(0,0,0,0.2);    z-index: 1;}/* Links inside the dropdown */
.dropdown-content a {    color: black;   
padding: 12px 16px;    text-decoration: none;   
display: block;}/* Change color of dropdown links on hover */
.dropdown-content a:hover {background-color: #ddd;}/* Show the
dropdown menu on hover */.dropdown:hover .dropdown-content {display: block;}/* Change the background color of the dropdown
button when the dropdown content is shown */.dropdown:hover .dropbtn {background-color: #3e8e41;}

Пример как работает

Мы создали стиль выпадающего кнопки с фоном-цвет, обивка и т.д.

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

класс содержит фактическое раскрывающееся меню. Он скрыт по умолчанию и будет отображаться при наведении курсора (см. ниже). Примечание . имеет значение 160пкс. Вы можете изменить это. Совет: Если нужно, чтобы ширина раскрывающегося списка была такой же широкой, как и кнопка раскрывающегося списка, установите значение 100% (и включите прокрутку на маленьких экранах).

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

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

Адаптация выпадающего html меню под мобильные устройства

Для того чтобы данное меню стало адаптироваться под мобильные устройства нам нужно:

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

    PHP

    <div class=»mobile-menu-button»> Меню </div>

    1 <div class=»mobile-menu-button»>Меню<div>
  2. 2.Далее нам нужно убедиться что к сайту подключена библиотека jQuery.

    Более подробно о её подключении вы можете узнать в этой статье «Как подключить jQuery к сайту»

  3. 3.Добавить небольшой скрипт, который отвечает за вызов выпадающего меню при нажатии на соответствующую кнопку на маленьких экранах. Данный скрипт вставляем перед закрытием тега </body>

    PHP

    <script>
    jQuery(document).ready(function($) {
    $(‘.mobile-menu-button’).click(function(e) {
    var $message = $(‘.new-mobile-menu’);
    if ($message.css(‘left’) != ‘0px’) {
    $message.css(‘left’,’0px’);
    var firstClick = true;
    $(document).bind(‘click.myEvent’, function(e) {
    if (!firstClick && $(e.target).closest(‘.new-mobile-menu’).length == 0) {
    $message.css(‘left’,’-1000px’);
    $(document).unbind(‘click.myEvent’);
    }
    firstClick = false;
    });
    }
    e.preventDefault();
    });
    });
    </script>

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    <script>

    jQuery(document).ready(function($){

    $(‘.mobile-menu-button’).click(function(e){

    var$message=$(‘.new-mobile-menu’);

    if($message.css(‘left’)!=’0px’){

    $message.css(‘left’,’0px’);

    varfirstClick=true;

    $(document).bind(‘click.myEvent’,function(e){

    if(!firstClick&&$(e.target).closest(‘.new-mobile-menu’).length==){

    $message.css(‘left’,’-1000px’);

    $(document).unbind(‘click.myEvent’);

    }

    firstClick=false;

    });

    }

    e.preventDefault();

    });

    });

    </script>

Вот, собственно говоря, и всё! Теперь осталось всё сохранить, проверить работоспособность и при необходимости внести свои правки в html и css код.
На первый взгляд кода много, но он не сложный и вы без труда сможете скорректировать его под свой сайт.

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

Так же заходите на мой канал YouTube, уверена, что вы найдёте там что то интересное для себя!

Успехов вам и вашим проектам! До скорых встреч в других моих статьях и видео!

С уважением Юлия Гусарь

ФОРМЫ

Форма входаФорма регистрацииФорма оформления заказаКонтактная формаФорма входа в соц сетиРегистрацияФорма с иконкамиРассылка по почтеСложенная формаАдаптивная формаФорма всплывающаяФорма линейнаяОчистить поле вводаКопирование текста в буфер обменаАнимированный поискКнопка поискаПолноэкранный поискПоле ввода в менюФорма входа в менюПользовательский флажок/радиоПользовательский выборТумблер перключательУстановить флажокОпределить Caps LockКнопка запуска на EnterПроверка пароляПереключение видимости пароляМногоступенчатая формаФункция автозаполнения

Изображения

СлайдшоуГалерея слайдшоуМодальные изображенияЛайтбоксАдаптивная сетка изображенияСетка изображенияГалерея изображений с вкладкамиНаложение при наведении курсора на изображениеСлайд наложенного изображенияZoom наложенного изображенияTitle наложенного изображенияИконка наложенного изображенияЭффекты изображенияЧерное и белое изображениеПозиция текста над изображениемТекстовые блоки над изображениемИзображение с прозрачным текстомФоновое изображение на всю страницуФорма на изображенииИмидж герояРазмытое фоновое изображение на всю страницуИзменение фона при прокруткеИзображения друг за другомОкруглые изображенияИзображения аватарыАдаптивные изображенияЦентрирование изображенийЭскизы изображенийПредставление команды на страницеЛипкое изображениеОтразить изображениеВстряхнуть изображениеГалерея портфолиоПортфолио с фильтрациейZoom изображенияУвеличительное стекло на изображенииСлайдер сравнения изображений

Больше

Fullscreen VideoМодальные коробкиШкалаИндикатор прокруткиСтроки хода выполненияПанель уменийПолзунки диапазонаПодсказкиPopupsСкладнойКалендарьHTML вставкаСписокПогрузчикиЗвездвРейтинг пользователейЭффект наложенияКонтактные фишкиКартыКарточка профиляОповещенияЗаметкиМеткиКругиКупонОтзывчивый текстФиксированный нижний колонтитулЛипкий элементОдинаковая высотаClearfixСнэк-барПрокрутка рисункаЛипкий заголовокТаблица ценПараллаксПропорцииПереключение типа/не нравитсяВключить скрытие/отображениеПереключение текстаПереключение классаДобавить классУдалить классАктивный классУвеличить HoverПереход при наведенииСтрелкиФормыОкно браузераНастраиваемая полоса прокруткиЦвет заполнителяВертикальная линияАнимация значковТаймер обратного отсчетаМашинкуСкоро страницаСообщения чатаРазделить экранОтзывыЦитаты слайд-шоуЗакрываемые элементы спискаТипичные точки останова устройстваПеретаскивание HTML-элементаКнопка спуска на входеJS медиа запросыJS анимацииПолучить элементы IFRAME

БОНУС — суперкрутой выпадающий список на ХТМЛ и ЦСС

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

Тоже делаем список со ссылками, отображающимися при наведении. Никаких анимаций, модных выездов, мигания — только чистый кроссбраузерный код, простой и эффективный. Вместо «display:none;» использую «left: -9999px;». Ну там сами увидите.

HTML код:

<ul class=»ddropdownn»>
    <li class=»ddropdownn-top»>
    <a class=»ddropdownn-top» href=»/»>Красноярский край<a>
        <ul class=»ddropdownn-inside»>
            <li><a href=»/»>Минусинск<a><li>
            <li><a href=»/»>Ачинск<a><li>
            <li><a href=»/»>Красноярск<a><li>
            <li><a href=»/»>Железногорск<a><li>
            <li><a href=»/»>Канск<a><li>
            <li><a href=»/»>Норильск<a><li>
        <ul>
    <li>
    <li class=»ddropdownn-top»>
    <a class=»ddropdownn-top» href=»/»>Свердловская область<a>
        <ul class=»ddropdownn-inside»>
            <li><a href=»/»>Екатеринбург<a><li>
            <li><a href=»/»>Верхняя Пышма<a><li>
            <li><a href=»/»>Нижний Тагил<a><li>
            <li><a href=»/»>Первоуральск<a><li>
            <li><a href=»/»>Асбест<a><li>
            <li><a href=»/»>Каменск-Уральский<a><li>
        <ul>
    <li><ul>

Скриншот результата:

CSS-код, который я поместил в <head>:

ul.ddropdownn li {/* Считаем координаты относительно исходного места. */ position relative; }
ul.ddropdownn, ul.ddropdownn-inside {
    /* Отступы на нуле. */
    padding ;
    /* Маркеры уберем. */
    list-style-type none;
    }
ul.ddropdownn-inside {
    /* Спрячем дочерние элементы выпадающего списка. */
    left -9999px;
    position absolute;
    }
ul.ddropdownn li.ddropdownn-top {
    /* Небольшой отступ. */
    margin 1px ;
    /* Выравнивание по левой стороне. */
    float left;
    display inline;
    }
ul.ddropdownn li.ddropdownn-top a {
    /* Делаю элементы блочными. */
    display block;
    /* Снова отступы. */
    padding 3px 10px 4px;
    }
ul.ddropdownn a.ddropdownn-top {/* Цвет фона. */ background #efefef; }
ul.ddropdownn a.ddropdownn-tophover {/* Отступы. */ padding 3px 10px 4px; }
ul.ddropdownn li.ddropdownn-tophover .ddropdownn-inside {
    left ;
    /* Делаю элементы блочными. */
    display block;
    }
ul.ddropdownn .ddropdownn-inside {/* Цвет фона. */ background #ffffff; }
ul.ddropdownn .ddropdownn-inside ahover {/* Цвет фона изменится при наведении. */ background #efefef; }

Результат (без наведения курсора):

Результат (при наведении курсора):

Выпадающий при наведении список меню на HTML

И снова мы изобретаем меню на чистом CSS, без использования JS.

<ul id=»menu»><li><a href=»#»>Раздел меню №1<a><li><li><a href=»#»>Раздел меню №2<a>
    <ul>
        <li><a href=»#»>Подраздел №1 второго меню<a><li>
        <li><a href=»#»>Подраздел №2 второго меню<a><li>
    <ul><li><li><a href=»#»>Раздел меню №3<a>
    <ul>
        <li><a href=»#»>Подраздел №1 третьего меню<a><li>
        <li><a href=»#»>Подраздел №2 третьего меню<a><li>
        <li><a href=»#»>Подраздел №3 третьего меню<a><li>
    <ul><li>       <ul>

Учитывая то, что вы видели в предыдущей части статьи, думаю выглядит многообещающе. А все благодаря чему? Потому что мы умеем присваивать нужным элементам стиль «display:none» и прописывать в CSS чтобы при наведении на него приоритетным было что-то типа «inline-block» взамен «none».

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

Дальше. В каждый из разделов я вложил дополнительные списки <ul>, которые содержат в себе выпадающие ссылки (см. также как вставить ссылку в HTML). Они будут появляться при наведении.

Перейдем к CSS. Код:

<style>
    /* Обнуляю отступы и убираю маркеры у списков. */
    ul, li {
        margin;
        padding;
        list-style-typenone;  
    }
    /* Задаю параметры для основного, родительского блока, меню выпадающего списка. */
    #menu {
        displayblock;
        positionabsolute;
        top20px;
        left20px;
    }
    /* Задаю стили для блоков выпадающего списка. */
    #menu > li {
        displayinline-block;
        height20px;
    /* Считаем координаты относительно исходного места. */
        positionrelative;
    }
    /* Задаю стили, чтобы скрыть дочерние блоки выпадающего списка. Ну и немного украшаю. */
    #menu > li > ul {
        positionabsolute;
        top20px;
        left 10px;
        displaynone;
        background-color bisque;
        border-radius 5px;
        width 185px;
        font-size 14px;
        padding 10 10 10;
    }
    /* Так я делаю прежде скрытую часть видимой — при наведении курсора. */
    #menu > lihover > ul {
        displayblock;  
    }
</style>

Результат:

Что хочу отметить дополнительно.

«#menu > li» означает, что стили будут применены только к дочерним элементам по отношению к тегу «ul#menu», а не ко всем как могли подумать некоторые. Внимательнее!

«Position: relative;» — отсчитывает координаты от угла одного из разделов в главном списке, откуда выпадают дочерние элементы.

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

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

Шаг 1) добавить HTML:

<div class=»navbar»>  <a href=»#home»>Home</a>  <a href=»#news»>News</a> 
<a href=»#contact»>Contact</a></div><div class=»main»> 
<p>Some text some text some text some text..</p></div>

Шаг 2) добавить CSS:

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

Обратите внимание, что фиксированное меню будет накладывать другое содержимое. Чтобы исправить это, добавьте (к содержимому), которое равно или больше, чем высота вашего меню

/* The navigation bar */.navbar {    overflow: hidden;   
background-color: #333;    position: fixed; /* Set
the navbar to fixed position */    top: 0;
/* Position the navbar at the top of the page */    width:
100%; /* Full width */}/* Links inside the navbar */
.navbar a {    float: left;    display:
block;    color: #f2f2f2;    text-align:
center;    padding: 14px 16px;   
text-decoration: none;}/* Change background on mouse-over */.navbar
a:hover {    background: #ddd;    color:
black;}/* Main
content */.main {    margin-top: 30px; /* Add a top
margin to avoid content overlay */}

HTML

Code

<div id=»m_body»>   <ul>   <li><a href=»//yraaa.ru/» onclick=»menuOpen(‘s_mn_1’);return(false)»>Пункт №1</a>   <ul id=»s_mn_1″>   <li><a href=»//yraaa.ru/»>Подпункт меню №1</a></li>   <li><a href=»//yraaa.ru/»>Подпункт меню №2</a></li>   </ul>   </li>   <li><a href=»//yraaa.ru/» onclick=»menuOpen(‘s_mn_2’);return(false)»>Пункт №2</a>   <ul id=»s_mn_2″>   <li><a href=»//yraaa.ru/»>Подпункт меню №1</a></li>   <li><a href=»//yraaa.ru/»>Подпункт меню №2</a></li>   </ul>   </li>   <li><a href=»//yraaa.ru/» onclick=»menuOpen(‘s_mn_3’);return(false)»>Пункт №3</a>   <ul id=»s_mn_3″>   <li><a href=»//yraaa.ru/»>Подпункт меню №1</a></li>   <li><a href=»//yraaa.ru/»>Подпункт меню №2</a></li>   <li><a href=»//yraaa.ru/»>Подпункт меню №3</a></li>   </ul>   </li>   </ul> </div>

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

ИЗОБРАЖЕНИЯ

Слайд шоуГалерея слайд шоуМодальное изображениеЛайтбоксОтзывчивая сетка изображенийСетка изображенийГалерея вкладокЭффект наведения на изображениеНаложение слайда на изображениеНаложение на изображениеНаложение заголовка на изображениеНаложение иконки на изображениеЭффект к изображениюЧерно-белое изображениеТекст на изображенииИзображение с текстовым блокомИзображение c прозрачным текстомИзображение на всю страницуФорма на изображенииИзображение герояРазмытое фоновое изображениеФоновое изображениеВыравненные изображенияОкругленные изображенияИзображение аватарОтзывчивое изображениеИзображение по центруМинитюрное изображениеЗнакомство с командойЛипкое изображениеЗеркальное изображениеДрожание изображенияГалерея портфолиоПортфолио фильтрЗум изображенияЛупа изображенияПолзунок сравнения

МЕНЮ

Панель иконокЗначок менюАккордеонВкладкиВертикальные вкладкиЗаголовки вкладокВкладки полностраничныеВкладки при наведенииВерхняя навигацияОтзывчивый верхний навигаторНавигация с иконкамиМеню поискаСтрока поискаФиксированная боковая панельАнимированные боковые панелиОтзывчивая боковая панельПолноэкранная навигация наложенияМеню Off-CanvasБоковые кнопки навигацииБоковая панель с иконкамиМеню с горизонтальной прокруткойВертикальное менюНижняя навигацияОтзывчивая нижняя навигацияГраницы навигацииМеню по правому краюСсылка меню по центруМеню равной шириныФиксированное менюСкольжение вниз по полосе прокруткиСкрыть меню при прокруткеУменьшить меню при прокруткеЛипкая навигацияНавигация на изображенияВыпадающее менюВыпадающий при кликеВыпадающее меню в навигацииВыпадающий список в боковой навигацииОтзывчивая навигация с выпадающимПодменю навигацияВсплывающее менюМега менюМобильное менюМеню занавесСвернуть боковой барСвернуть боковую панельПагинацияХлебные крошкиГруппа кнопокГруппа вертикальных кнопокЛипкий социальный барНавигация таблеткиОтзывчивый заголовок

CSS

.nav,.nav ul {
    list-style:none;
    margin:0;
    padding:0;
}

.nav {
    position:relative;
}

.nav ul {
    height:0;
    left:0;
    overflow:hidden;
    position:absolute;
    top:46px;
}

.nav li {
    float:left;
    position:relative;
}

.nav li a {
    -moz-transition:0.5s;
    -o-transition:0.5s;
    -webkit-transition:0.5s;
    background-color:#7770B4;
    border:1px solid #6E67A6;
    color:#FFF;
    display:block;
    font-size:16px;
    line-height:35px;
    padding:5px 20px;
    text-decoration:none;
    transition:0.5s;
}

.nav li:hover > a {
    background:#8CCA33;
    border-color:#6E67A6;
    color:#fff;
}

.nav li:hover ul.subs {
    height:auto;
    width:180px;
}

.nav ul li {
    -moz-transition:0.5s;
    -o-transition:0.5s;
    -webkit-transition:0.5s;
    opacity:0;
    transition:0.5s;
    width:100%;
}

.nav li ul li {
    -moz-transition-delay:0s;
    -o-transition-delay:0s;
    -webkit-transition-delay:0s;
    transition-delay:0s;
}

.nav li:hover ul li {
    opacity:1;
    -moz-transition-delay:0.5s;
    -o-transition-delay:0.5s;
    -webkit-transition-delay:0.5s;
    transition-delay:0.5s;
}

.nav ul li a {
    background:#7770B4;
    border-color:#6E67A6;
    color:#fff;
    line-height:1px;
    -moz-transition:1.5s;
    -o-transition:1.5s;
    -webkit-transition:1.5s;
    transition:1.5s;
}

.nav li:hover ul li a {
    line-height:35px;
}

.nav ul li a:hover {
    background:#8CCA33;
    background-image: -webkit-gradient(linear, 0% 0%, 0% 95%, from(rgba(255, 255, 255, 0.5)), to(rgba(255, 255, 255, 0)));
    background-image: -moz-linear-gradient(-90deg, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0));
    background-image: -o-linear-gradient(-90deg,rgba(255,255,255,0.5),rgba(255,255,25,0));
}

ЕЩЁ

Полноэкранное видеоМодальное окноШкала времениИндикатор прокрутки Индикатор выполненияПанель навыковПолзунок диапазонаПодсказки при наведенииВсплывающие окнаСкладная секцияКалендарьВключить HTMLСписок делЗагрузчикиЗвездный рейтингПользовательский рейтингНаложениеКонтактные чипыКарточкиФлип-картаКарточка профиляКарточка товараОкно тревогиВыноска сообщенияПримечаниеМеткиКругиHR Горизонтальная линияКупонГруппа списковОтзывчивый текстВырезанный текстСветящийся текстФиксированный подвалЛипкий элементРавная высота столбцовОчистка поплавкаОтзывчивые поплавкиСнэк-бар/тостПолноэкранное режимЧертеж при прокруткеПлавная прокруткаГрадиент фонаЛипкий заголовокИзменить заголовок при прокруткеОтзывчивые столбцы ценПараллаксСоотношение сторонПереключатель нравится/не нравитсяПереключатель скрыть/показатьПереключаель текстаПереключатель классаДобавить классУдалить классАктивный классДревовидное представлениеУдалить свойствоАвтономный режим обнаруженияСделать скрытый элементПеренаправление веб страницыУвеличить при наведенииФлип-боксЭлемент вертикально по центруПереход при наведении курсораСтрелкиФигурыСсылка для скачиванияПолная высота элементаОкно браузераПользовательская полоса прокруткиРазличные устройстваЦвет заполнителяЦвет выделения текстаЦвет макераВертикальная линияАнимированные иконкиТаймер обратного отсчетаПишущая машинкаСтраница заставкиСообщение чатаВсплывающее окно чатаРазделенный экранРекомендацииСчетчик разделаСлайд-шоу цитатЗакрываемые злементы спискаТипичные точки прерыванияПеретаскиваемый HTML элементМедиа запросы JSПодсветка синтаксисаJS анимацииПолучить элементы Iframe

Изображения

Слайд-шоуГалерея слайд-шоуМодальные изображенияЛайтбоксАдаптивная Сетка изображенияСетка изображенияГалерея вкладокОверлей изображенияСлайд с наложенным изображениемМасштабирование наложения изображенияНазвание наложения изображенияЗначок наложения изображенияЭффекты изображенияЧерно-белое изображениеТекст изображенияТекстовые блоки изображенийПрозрачный текст изображенияПолное изображение страницыФорма на картинкеГерой изображениеПараллельные изображенияОкругленные изображенияАватар изображенияАдаптивные образыЦентрировать изображенияМиниатюрыПознакомьтесь с командойЛипкое изображениеОтражение изображенияВстряхните изображениеПортфолио галереяПортфолио с фильтрациейМасштабирование изображенияИзображение увеличительное стеклоПолзунок сравнения изображений

Больше

Fullscreen VideoМодальные коробкиШкалаИндикатор прокруткиСтроки хода выполненияПанель уменийПолзунки диапазонаПодсказкиPopupsСкладнойКалендарьHTML вставкаСписокПогрузчикиЗвездвРейтинг пользователейЭффект наложенияКонтактные фишкиКартыКарточка профиляОповещенияЗаметкиМеткиКругиКупонОтзывчивый текстФиксированный нижний колонтитулЛипкий элементОдинаковая высотаClearfixСнэк-барПрокрутка рисункаЛипкий заголовокТаблица ценПараллаксПропорцииПереключение типа/не нравитсяВключить скрытие/отображениеПереключение текстаПереключение классаДобавить классУдалить классАктивный классУвеличить HoverПереход при наведенииСтрелкиФормыОкно браузераНастраиваемая полоса прокруткиЦвет заполнителяВертикальная линияАнимация значковТаймер обратного отсчетаМашинкуСкоро страницаСообщения чатаРазделить экранОтзывыЦитаты слайд-шоуЗакрываемые элементы спискаТипичные точки останова устройстваПеретаскивание HTML-элементаКнопка спуска на входеJS медиа запросыJS анимацииПолучить элементы IFRAME

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

displayoverflowtopleftoverflow
.menu {
  background: #000;
  border: 1px solid #666;
  border-radius: 3px;
  height: 40px;
}
.menu li {
  position: relative;
  float: left;
  height: 40px;
  overflow: hidden; /*все блоки вне видимой области будут скрыты*/
}/*ссылки*/
.menu li a {
  display: block;
  padding: 0 5px;
  margin: 3px;
  font: normal normal 14px/28px Tahoma, sans-serif;
  color: #FFF;
}
.menu li:hover > a {
   background: #0C6;
}
/*выпадающие блоки*/
.menu ul {
  position: absolute;
  *display: none;
  background: #666;
  border: 1px solid #999;
  min-width: 150px;
}
.menu li:hover {
  overflow: visible; /*при наведении покажет скрытую область*/
}.menu ul {
  left: 0;
  top: 100%;
}
.menu li ul li ul{
  left: 100%;
  top: 0%;
}

top
.menu {
  background: #000;
  border: 1px solid #666;
  border-radius: 3px;
  height: 40px;
}
.menu li {
  position: relative;
  float: left;
  height: 40px;
}
/*ссылки*/
.menu li a {
  display: block;
  padding: 0 5px;
  margin: 3px;
  font: normal normal 14px/28px Tahoma, sans-serif;
  color: #FFF;
}
.menu li:hover > a {
  background: #0C6;
}
/*выпадающие блоки*/
.menu ul {
  position: absolute;
  background: #666;
  border: 1px solid #999;
  min-width: 150px;
  top: -9999em; /*изначальное смещение выпадающих блоков*/
}
.menu li:hover > ul {
  left: 0;
  top: 100%;
}
.menu li ul li:hover > ul {
  left: 100%;
  top: 0%;
}

ИЗОБРАЖЕНИЯ

Слайд шоуГалерея слайд шоуМодальное изображениеЛайтбоксОтзывчивая сетка изображенийСетка изображенийГалерея вкладокЭффект наведения на изображениеНаложение слайда на изображениеНаложение на изображениеНаложение заголовка на изображениеНаложение иконки на изображениеЭффект к изображениюЧерно-белое изображениеТекст на изображенииИзображение с текстовым блокомИзображение c прозрачным текстомИзображение на всю страницуФорма на изображенииИзображение герояРазмытое фоновое изображениеФоновое изображениеВыравненные изображенияОкругленные изображенияИзображение аватарОтзывчивое изображениеИзображение по центруМинитюрное изображениеЗнакомство с командойЛипкое изображениеЗеркальное изображениеДрожание изображенияГалерея портфолиоПортфолио фильтрЗум изображенияЛупа изображенияПолзунок сравнения

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

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

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

<ul id="navbar">
  <li><a href="#">Главная</a></li>
  <li><a href="#">Новости</a></li>
  <li><a href="#">Контакты</a></li>
  <li><a href="#">О нас</a></li>
</ul>

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

<ul id="navbar">
  <li><a href="#">Главная</a></li>
  <li><a href="#">Новости</a></li>
  <li><a href="#">Контакты</a>
    <ul>
      <li><a href="#">Адрес</a></li>
      <li><a href="#">Телефон</a></li>
      <li><a href="#">Email</a></li>
    </ul>
  </li>
  <li><a href="#">О нас</a></li>
</ul>

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

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

#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; }

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

Итоги: скачать готовый html+css код выпадающего списка меню

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

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

Я подготовил для вас архив, который вы можете скачать. Там все 4 выпадающих списка — html код и css стили прямо в файле. Там думаю разберетесь.

Превью содержимого файла:

Скачать:

P.S. Ну а если вы вдруг неправильно написали поисковый запрос и зашли не туда (не нашли то чего нужно), не расстраивайтесь — у меня есть пара видео, где при помощи <select> и <option> в HTML страницу вставляются выпадающие списки. Видео 1:

Видео 2:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: