Содержание

Как Создать Выпадающее Меню CSS

Sait

access_time

9 декабря, 2020

hourglass_empty

2мин. чтения

Введение

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

Нужен недорогой, но надёжный хостинг для вашего нового проекта? Обратите внимание, что в Hostinger действуют скидки на все тарифы хостинга. Воспользуйтесь предложением и разместите сайт до 90% дешевле!

К предложению

Что вам понадобится

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

  • Доступ к контрольной панели вашего хостинга

Шаг 1 — Создание HTML-файла

Во-первых, вам нужно создать пустой HTML-файл. В этом руководстве мы создадим новый файл под названием menu.html. Для этого мы будем использовать Файловый менеджер. Однако тот же результат может быть достигнут с использованием FTP-клиента (создайте файл menu.html на вашем компьютере и загрузите его на ваш хостинг).

Шаг 2 — Добавление кода HTML меню

Наше меню будет сделано из одного родительского элемента под названием Главное меню и пяти подразделов. Изменяя адрес внутри атрибута href, вы можете связать каждый подраздел с разными страницами вашего сайта. Вы наверное заметили, что каждый элемент имеет разный класс — dropdown, mainmenubtn и dropdown-child. Классы необходимы для применения правил CSS.

<div>
  <button>Главное меню</button>
  <div>
    <a href="http://www.вашдомен.ru/page1.html">Подраздел 1</a>
    <a href="http://www.вашдомен. ru/page2.html">Подраздел 2</a>
    <a href="http://www.вашдомен.ru/page3.html">Подраздел 3</a>
    <a href="http://www.вашдомен.ru/page4.html">Подраздел 4</a>
    <a href="http://www.вашдомен.ru/page5.html">Подраздел 5</a>
  </div>
</div>

Вот, как это выглядит без применения каких-либо CSS-правил:

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

Шаг 3 — Как создать выпадающее меню CSS

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

.mainmenubtn {
    background-color: red;
    color: white;
    border: none;
    cursor: pointer;
    padding:20px;
    margin-top:20px;
}

.mainmenubtn:hover {
    background-color: red;
    }
    
.dropdown {
    position: relative;
    display: inline-block;
}
.dropdown-child {
    display: none;
    background-color: black;
    min-width: 200px;
}
.
dropdown-child a {    color: white;    padding: 20px;    text-decoration: none;    display: block; } .dropdown:hover .dropdown-child {    display: block; }

Как вы видите, класс .dropdown-child имеет CSS правило display: none. Однако, как только пользователь проведет курсором (.dropdown:hover) по родительскому элементу, это правило изменит его отображение на display: block. Это и создаст эффект выпадающего меню.

Ниже представлен финальный результат нашего файла menu.html:

<html>
<head>
<style>
.mainmenubtn {
    background-color: 
red
;    color: white;    border: none;    cursor: pointer;    padding:20px;    margin-top:20px; } .dropdown {    position: relative;    display: inline-block; } .dropdown-child {    display: none;    background-color: black;    min-width: 200px; } .dropdown-child a {    color: white;    padding: 20px;    text-decoration: none;    display: block; } . dropdown:hover .dropdown-child {    display: block; } </style> </head> <body> <div class="dropdown">  <button class="mainmenubtn">Главное меню</button>  <div class="dropdown-child">    <a href="http://www.вашдомен.ru/page1.html">Подраздел 1</a>    <a href="http://www.вашдомен.ru/page2.html">Подраздел 2</a>    <a href="http://www.вашдомен.ru/page3.html">Подраздел 3</a>    <a href="http://www.вашдомен.ru/page4.html">Подраздел 4</a>    <a href="http://www.вашдомен.ru/page5.html">Подраздел 5</a>  </div> </div> </body> </html>

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

Как только вы закончите, финальный результат должен быть похож на это:

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

Заключение

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

Выпадающее меню на HTML / CSS без использования JavaScript

Очень часто необходимо сделать на сайте выпадающее при наведении меню. Большинство веб-девелоперов используют для этого JavaScript / Jquery. Это конечно хорошо, но такого роди задачи легко решаются с помощью HTML / CSS.

Вот простой пример HTML-кода меню:

<ul>
    <li><a href=#>Menu 1</a>
        <ul>
            <li><a href=#>Sudmenu 1</a></li>
            <li><a href=#>Sudmenu 1</a></li>
            <li><a href=#>Sudmenu 1</a></li>
        </ul>
    </li>
    <li><a href=#>Menu 2</a>
        <ul>
            <li><a href=#>Sudmenu 2</a></li>
            <li><a href=#>Sudmenu 2</a></li>
            <li><a href=#>Sudmenu 2</a></li>
        </ul>
    </li>
    <li><a href=#>Menu 3</a>
        <ul>
            <li><a href=#>Sudmenu 3</a></li>
            <li><a href=#>Sudmenu 3</a></li>
            <li><a href=#>Sudmenu 3</a></li>
        </ul>
    </li>
    <li><a href=#>Menu 4</a>
        <ul>
            <li><a href=#>Sudmenu 4</a></li>
            <li><a href=#>Sudmenu 4</a></li>
            <li><a href=#>Sudmenu 4</a></li>
        </ul>
    </li>
    <li><a href=#>Menu 5</a>
        <ul>
            <li><a href=#>Sudmenu 5</a></li>
            <li><a href=#>Sudmenu 5</a></li>
            <li><a href=#>Sudmenu 5</a></li>
        </ul>
    </li>
</ul>

Для построения меню был использован список с классом menu.

Подменю сделаны списками с классом submenu.

Теперь давайте как-нибудь минимально оформим наше меню стилями:


body {
    font: 14px 'Verdana';
    margin: 0;
    padding: 0;
}
ul {
    display: block;
    margin: 0;
    padding: 0;
    list-style: none;
}
ul:after {
    display: block;
    content: ' ';
    clear: both;
    float: none;
}
ul.menu > li {
    float: left;
    position: relative;
}
ul.menu > li > a {
    display: block;
    padding: 10px;
    color: white;
    background-color: red;
    text-decoration: none;
}
ul.menu > li > a:hover {
    background-color: black;
}
ul.submenu {
    display: none;
    position: absolute;
    width: 120px;
    top: 37px;
    left: 0;
    background-color: white;
    border: 1px solid red;
}
ul.submenu > li {
    display: block;
}
ul.submenu > li > a {
    display: block;
    padding: 10px;
    color: white;
    background-color: red;
    text-decoration: none;
}
ul.submenu > li > a:hover {
    text-decoration: underline;
}

Для класса submenu было установлено свойство ‘display: none’. Это позволило на спрятать наше выпадающее меню.

Теперь добавим в CSS такой код:


ul.menu > li:hover > ul.submenu {
    display: block;
}

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

Вот и все. Просто и легко без JavaScript.

Cоздание выпадающего меню на HTML и CSS просто

Автор статьи: admin

В этой статье мы разберём, как происходит создание выпадающего меню на HTML, CSS и JavaScript.

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

Создание горизонтального выпадающего меню:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<header>

    <nav>

        <ul>

            <li><a href=»#»>Главная</a></li>

            <li>Галерея

                <ul>

                    <li><a href=»#»>Машины</a></li>

                    <li><a href=»#»>Горы</a></li>

                    <li><a href=»#»>Компьютеры</a></li>

                </ul>

            </li>

            <li>О себе

                <ul>

                    <li><a href=»#»>Имя</a></li>

                    <li><a href=»#»>Аватарка</a></li>

                </ul>

            </li>

        </ul>

    </nav>

</header>

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

Теперь перейдём к 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

html, body {

margin: 0;

padding: 0;

}

 

nav > ul {

display: flex;

margin: 0;

width: 100%;

background-color: green;

}

 

nav > ul > li {

margin-right: 20px;

}

 

li {

color: white;

list-style: none;

font-size: 20px;

}

 

li a {

color: white;

text-decoration: none;

}

 

li > ul{

display: none;

position: absolute;

background-color: tomato;

padding: 0;

}

 

li:hover > ul{

display: block;

}

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

Дальше настраиваем внешний вид, делаем FlexBox и задаём отступы, самое главное, что нужно сделать, это тегам <ul>, которые находятся внутри тега <li>, сделать позиционирование absolute и добавить ему свойство display: none, что бы блок не показывался на экране.

Последнее важное изменение, это при наведении мышкой на <li>, внутри которого есть <ul>, он появлялся, вот что получилось.

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

Примечание:

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

nav > ul {

display: flex;

margin: 0;

width: 100%;

height: 25px;

background-color: green;

}

 

li > ul{

position: absolute;

top: 40px;

visibility: hidden;

opacity: 0;

background-color: tomato;

padding: 0;

transition: 400ms;

}

 

li:hover > ul{

visibility: visible;

top: 25px;

opacity: 1;

}


В первом селекторе мы добавляем высоту, чтобы было проще менять позицию, во втором, добавляем позицию top равного 45 пикселем, также устанавливаем свойство visibility: hidden, которое отвечает за скрытие элемента, и opacity: 0, для прозрачности, значение ноль, означает что элемент полностью прозрачен.

В последнем селекторе который мы изменяем, который ещё отвечает за наведение мышки, убираем display и добавляем visibility: visible, для показа элемента, top равный 25 пикселям и opacity: 1, для полной не прозрачности.

Также появилось свойство transition, для плавных переходов, мы задаём ему время перехода 400 миллисекунды.

Вывод:

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

Подписываетесь на соц-сети:

Оценка:

(Пока оценок нет)

Загрузка…

Также рекомендую:

Как сделать многоуровневое выпадающее меню только с HTML и CSS (возможно, крошечное JavaScript)



Новичок в CSS и может найти только одноуровневые меню. Вот меню и список пунктов:

<ul>
    <li>
        <a href="#">Home</a>
    </li>
    <li>
        <a href="#">Forums</a>
        <ul>
            <a href="#">Basketball</a>
            <ul>
                <li>
                    <a href="#">Trading</a>
                </li>
                <li>
                    <a href="#">Personal Collections</a>
                </li>
                <li>
                    <a href="#">Box Breaks</a>
                </li>
            </ul>
        </ul>
    </li>
</ul>

Как видите, он будет многоуровневым. Теперь, когда у меня есть CSS, сначала отображаются только главная страница и форумы, а когда я навожу курсор на форумы, баскетбол-это displayed…but, как и последующие пункты меню. Я хочу, чтобы они оставались скрытыми, пока я не нависну над баскетболом. Кто-нибудь знает, как сделать это только с CSS или как можно меньше JavaScript? Спасибо. Вот код CSS, который у меня есть:

ul
{
    margin: 0;
    padding: 0;
    list-style: none;
    width: 150px;
    border-bottom: 1px solid #ccc;
}

ul li
{
    position: relative;
}

li ul
{
    position: absolute;
    left: 149px;
    top: 0;
    display: none;
}

ul li a
{
    display: block;
    text-decoration: none;
    color: #777;
    background: #bad8f8;
    padding: 2px 0 2px 10px;
    border: 1px solid #ccc;
    border-bottom: 0;
}

li:hover ul
{
    display: block;
}

/* Styles for validation helpers
-----------------------------------------------------------*/
.field-validation-error
{
    color: #ff0000;
}

.field-validation-valid
{
    display: none;
}

.
input-validation-error { border: 1px solid #ff0000; background-color: #ffeeee; } .validation-summary-errors { font-weight: bold; color: #ff0000; } .validation-summary-valid { display: none; }
html css menu stylesheet drop-down-menu
Поделиться Источник XstreamINsanity     20 января 2011 в 22:09

3 ответа




1

Вот рабочая демонстрация:

http://jsfiddle.net/rcravens/aqz8q/

Я сделал две вещи.

  1. Небольшая реструктуризация списка ul/li. Некоторые элементы были не в Ли.

  2. Используется ‘li:hover > ul’ для выбора только прямых дочерних элементов.

Надеюсь, это поможет.

Боб

Поделиться rcravens     20 января 2011 в 22:17



0

То, как вы структурировали свой css, приводит к тому, что все потомки «Basketball» наследуют его css. Вместо этого вы должны использовать child(«>») или :first-child selector. Посмотрите на разделы 5.5 и 5.6 здесь, чтобы понять, о чем я говорю: http:/ / www.w3.org/TR/CSS2 / selector. html

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

Поделиться Bhavya     20 января 2011 в 22:23



0

Попробуйте добавить

ul li ul{position: absolute; top: 0; left: 0; width: 250px; height: 250px; background-color: #EEE;}

И идите оттуда 🙂

Поделиться plebksig     20 января 2011 в 22:18



Похожие вопросы:


CSS выпадающее меню

Есть ли хорошее решение для выпадающего меню css, которое можно использовать на обычном веб-сайте html? Или лучше использовать javascript?


многоуровневое меню с css &html?

Я хочу создать многоуровневое меню с чистым css & html. положение меню должно контролироваться css. Кто-нибудь может мне помочь?


Многоуровневое выпадающее меню без css эффектов наведения asp.net jquery

Я хочу создать многоуровневое выпадающее меню в asp.net, используя c# для составного элемента управления. Кто-нибудь знает или знает какие-нибудь указания о том, как его создать? Я посмотрел на…


Twitter Многоуровневое Выпадающее Меню Bootstrap

Можно ли иметь многоуровневое выпадающее меню с помощью элементов twitter bootstrap 2? В оригинальной версии этой функции нет.


WordPress многоуровневое выпадающее меню

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


Javascript многоуровневое выпадающее меню

HTML код: <ul class=nav-menu> <li id=no onmouseover=dropDown() onmouseout=reverseDropDown()> <a href=# >Birds</a> <ul class=menu> <li id=no2 ><a href=#. ..


Как сделать выпадающее меню полной ширины и push-контент только с HTML+CSS?

Я пытаюсь создать чистое и простое выпадающее меню HTML+CSS, которое будет открываться в режиме полной ширины под каждым элементом, а также будет нажимать контент. Это изображение и jsfiddle лучше…


Как сделать многоуровневое выпадающее меню с помощью select option mentod

я хочу сделать многоуровневое выпадающее меню с помощью метода select и option <select> <option value= data-display-text=Select>None</option> <option…


Многоуровневое выпадающее меню Bokeh

Я хочу сделать многоуровневое выпадающее меню, что-то вроде того, что есть в этом XKCD: Есть ли какой-то способ, чтобы подкатегории складывались таким образом, используя выпадающее меню Боке? Мой…


Как развернуть выпадающее меню с помощью css , javascript и html?

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

Плавно открывающееся меню с помощью CSS

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





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


<nav>
	<ul>
		<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="#">Выпадающий пункт 1</a></li>
				<li><a href="#">Выпадающий пункт 2</a></li>
				<li><a href="#">Выпадающий пункт 3</a></li>
			</ul>
		</li>

	</ul>
</nav>

Думаю тут все понятно, самое простое 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 пикселей.

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

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

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

Выпадающее по клику меню на css

я однажды реализовывал подобное меню. там смысл достаточно прост: делаем обычное навигационное меню. раз меню выпадающее — делаем первый и второй уровень (допустим). первый уровень отображается всегда, а вот второй скрываем с помощью display: none;. при наведении на определённый пункт меню первого уровня через псевдокласс :hover отображаем ссылки второго уровня. тут правильно задать позиционирование для второго уровня. а также очень важно (это проблема заставила меня долго мучаться) задать для пункта, при наведении на который будет появляться подменю, padding по-больше. чтобы площадь реагирования на наведение увеличить. Для большей наглядности мой код HTML (упрощённый):

<!DOCTYPE html PUBLIC "-//W3C/DTD//XTHML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtm1" xml:lang="en" lang="ru">
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<ul>
            <li><a href="#">О компании</a></li>
            <li><a href="#">Услуги</a>
                <ul>
                    <li><a href="#">Все виды оценки</a></li>
                    <li><a href="#">Автоэкспертиза</a></li>
                    <li><a href="#">Автострахование</a></li>
                    <li><a href="#">Юридические услуги</a></li>
                </ul><!--end sub_nav-->
            </li>
            <li><a href="#">Тарифы</a></li>
            <li><a href="#">Новости</a></li>
            <li><a href="#">Контакты</a></li>
        </ul><!--end main_nav-->
</body>
</html>

И код CSS (тоже упрощён):

#main_nav {
            position: relative;
            top: 15px;
            margin-top: 14px;
            margin-left: 280px;
            }
        #main_nav li{
            display: inline;
            padding: 0 8px;
            border-left: 1px dotted #8b6619;
            position: relative;
            z-index: 2;
            }
        #main_nav li:first-child, #main_nav ul li {
            border-left: none;
            }
        #main_nav ul {
            display: none;
            position: absolute;
            top: 19px;
            left: 0;
            z-index: 1;
            width: 155px;
            }
        #main_nav li a, #main_nav li ul li a{
            color: #8b6619;
            font-family: "Times New Roman", serif;
            font-size: 0. 9em;
            font-weight: bold;
            text-decoration: none;
            outline: none;
            padding-bottom: 17px;
            }
        #main_nav li a:hover, 
        #main_nav li ul a:hover {
            color: black;
            }
        /*--------------Подменю--------------*/
            #main_nav li:hover ul {
                display: block;
                }

Вот и всё. Спасибо за голоса!)

Создаем анимированное выпадающее меню при помощи CSS3

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

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

Онлайн-демо

HTML

Структура меню очень простая — это неупорядоченный список с ссылками. Вот фрагмент его кода:

<ul>
 <li><a href=»#»>Home</a></li>
 <li>
 <a href=»#»>Categories</a>
 <ul>
 <li><a href=»#»>CSS</a></li>
 <li><a href=»#»>Graphic design</a></li>
 <li><a href=»#»>Development tools</a></li>
 <li><a href=»#»>Web design</a></li>
 </ul>
 </li>
 <li><a href=»#»>Work</a></li>
 <li><a href=»#»>About</a></li>
 <li><a href=»#»>Contact</a></li>
</ul>

CSS

Сначала сбрасываем стили по-умолчанию:

#menu, #menu ul {
 margin: 0;
 padding: 0;
 list-style: none;
}

Первый уровень меню.

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

#menu {
 width: 960px;
 margin: 60px auto;
 border: 1px solid #222;
 background-color: #111;
 background-image: -moz-linear-gradient(#444, #111);
 background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111));
 background-image: -webkit-linear-gradient(#444, #111);
 background-image: -o-linear-gradient(#444, #111);
 background-image: -ms-linear-gradient(#444, #111);
 background-image: linear-gradient(#444, #111);
 -moz-border-radius: 6px;
 -webkit-border-radius: 6px;
 border-radius: 6px;
 -moz-box-shadow: 0 1px 1px #777;
 -webkit-box-shadow: 0 1px 1px #777;
 box-shadow: 0 1px 1px #777;
}

Clear floats.

Это метод Nicolas Gallagher, который я обычно использую:

#menu:before,
#menu:after {
 content: «»;
 display: table;
}
#menu:after {
 clear: both;
}
#menu {
 zoom:1;
}

Список элементов.

Обратите внимание на селектор #menu li:hover>a. Это, пожалуй, наиболее важный CSS трюк для этого выпадающего меню.

Итак, вот как это работает: выбираем элемент «а», который является дочерним для «li», а элемент «li» должен быть в свою очередь потомком «#menu». Подробнее о селекторах читайте здесь.

#menu li {
 float: left;
 border-right: 1px solid #222;
 -moz-box-shadow: 1px 0 0 #444;
 -webkit-box-shadow: 1px 0 0 #444;
 box-shadow: 1px 0 0 #444;
 position: relative;
}
#menu a {
 float: left;
 padding: 12px 30px;
 color: #999;
 text-transform: uppercase;
 font: bold 12px Arial, Helvetica;
 text-decoration: none;
 text-shadow: 0 1px 0 #000;
}
#menu li:hover > a {
 color: #fafafa;
}
*html #menu li a:hover { /* IE6 only */
 color: #fafafa;
}

Подпункты меню.

С помощью свойства CSS3 transitions мы можем создать анимацию изменяя такие CSS-свойства, как margin или opacity. И я использовал это для анимации подменю. Вот что в результате получилось:

#menu ul {
 margin: 20px 0 0 0;
 _margin: 0; /*IE6 only*/
 opacity: 0;
 visibility: hidden;
 position: absolute;
 top: 38px;
 left: 0;
 z-index: 9999;
 background: #444;
 background: -moz-linear-gradient(#444, #111);
 background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #111),color-stop(1, #444));
 background: -webkit-linear-gradient(#444, #111);
 background: -o-linear-gradient(#444, #111);
 background: -ms-linear-gradient(#444, #111);
 background: linear-gradient(#444, #111);
 -moz-box-shadow: 0 -1px rgba(255,255,255,.3);
 -webkit-box-shadow: 0 -1px 0 rgba(255,255,255,.3);
 box-shadow: 0 -1px 0 rgba(255,255,255,.3);
 -moz-border-radius: 3px;
 -webkit-border-radius: 3px;
 border-radius: 3px;
 -webkit-transition: all .2s ease-in-out;
 -moz-transition: all .2s ease-in-out;
 -ms-transition: all . 2s ease-in-out;
 -o-transition: all .2s ease-in-out;
 transition: all .2s ease-in-out;
}
#menu li:hover > ul {
 opacity: 1;
 visibility: visible;
 margin: 0;
}
#menu ul ul {
 top: 0;
 left: 150px;
 margin: 0 0 0 20px;
 _margin: 0; /*IE6 only*/
 -moz-box-shadow: -1px 0 0 rgba(255,255,255,.3);
 -webkit-box-shadow: -1px 0 0 rgba(255,255,255,.3);
 box-shadow: -1px 0 0 rgba(255,255,255,.3);
}
#menu ul li {
 float: none;
 display: block;
 border: 0;
 _line-height: 0; /*IE6 only*/
 -moz-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
 -webkit-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
 box-shadow: 0 1px 0 #111, 0 2px 0 #666;
}
#menu ul li:last-child {
 -moz-box-shadow: none;
 -webkit-box-shadow: none;
 box-shadow: none;
}
#menu ul a {
 padding: 10px;
 width: 130px;
 _height: 10px; /*IE6 only*/
 display: block;
 white-space: nowrap;
 float: none;
 text-transform: none;
}
#menu ul a:hover {
 background-color: #0186ba;
 background-image: -moz-linear-gradient(#04acec,  #0186ba);
 background-image: -webkit-gradient(linear, left top, left bottom, from(#04acec), to(#0186ba));
 background-image: -webkit-linear-gradient(#04acec, #0186ba);
 background-image: -o-linear-gradient(#04acec, #0186ba);
 background-image: -ms-linear-gradient(#04acec, #0186ba);
 background-image: linear-gradient(#04acec, #0186ba);
}

Стили для первого и последнего элемента меню.

#menu ul li:first-child > a {
 -moz-border-radius: 3px 3px 0 0;
 -webkit-border-radius: 3px 3px 0 0;
 border-radius: 3px 3px 0 0;
}
#menu ul li:first-child > a:after {
 content: »;
 position: absolute;
 left: 40px;
 top: -6px;
 border-left: 6px solid transparent;
 border-right: 6px solid transparent;
 border-bottom: 6px solid #444;
}
#menu ul ul li:first-child a:after {
 left: -6px;
 top: 50%;
 margin-top: -6px;
 border-left: 0;
 border-bottom: 6px solid transparent;
 border-top: 6px solid transparent;
 border-right: 6px solid #3b3b3b;
}
#menu ul li:first-child a:hover:after {
 border-bottom-color: #04acec;
}

#menu ul ul li:first-child a:hover:after {
 border-right-color: #0299d3;
 border-bottom-color: transparent;
}
#menu ul li:last-child > a {
 -moz-border-radius: 0 0 3px 3px;
 -webkit-border-radius: 0 0 3px 3px;
 border-radius: 0 0 3px 3px;
}

jQuery


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

$(function() {
 if ($.browser.msie &amp;&amp; $.browser.version.substr(0,1)<7)
 {
 $(‘li’).has(‘ul’).mouseover(function(){
 $(this).children(‘ul’).css(‘visibility’,’visible’);
 }).mouseout(function(){
 $(this).children(‘ul’).css(‘visibility’,’hidden’);
 })
 }
});

Онлайн-демо

Данное меню протестировано в Firefox 8, Chrome 15, Opera 11.52, Safari и IE7.

Скачать исходники.

Перевод


Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

Popup Menus — Архив устаревшего контента

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

XUL имеет три различных типа всплывающих окон, описанных ниже. Основное отличие заключается в том, как они появляются.

Обычные всплывающие окна
Простое всплывающее окно — это всплывающее окно, которое появляется, когда пользователь нажимает левую кнопку мыши на элементе. Они очень похожи на меню в строке меню, за исключением того, что они могут быть размещены где угодно и могут содержать любое содержимое. Хорошим примером является раскрывающееся меню, которое появляется, когда вы нажимаете маленькие стрелки вниз рядом с кнопками назад и вперед в окне браузера.
Контекстные всплывающие окна
Контекстное всплывающее окно — это всплывающее окно, которое появляется, когда пользователь нажимает кнопку контекстного меню, которой обычно является правая кнопка мыши. Точный способ открытия контекстного меню зависит от платформы.Например, на Macintosh пользователь может либо нажать клавишу Control и щелкнуть кнопкой мыши, либо удерживать кнопку мыши на мгновение. Также обратите внимание, что контекстные меню можно открывать без использования мыши, например, нажав клавишу меню на клавиатуре.
Подсказки
Всплывающее окно всплывающей подсказки появляется, когда пользователь наводит курсор на элемент с помощью мыши. Этот тип всплывающего окна обычно используется для предоставления более подробного описания кнопки, чем может быть предоставлено на самой кнопке.

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

Всплывающее окно описывается с помощью элемента menupopup . Он не имеет особых атрибутов и является разновидностью ящика. При вызове он отображает окно, содержащее все, что вы поместили в всплывающее меню . Однако вы всегда должны помещать атрибут id во всплывающее меню, поскольку он используется для связывания всплывающего окна с элементом.Мы скоро увидим, что это значит. Во-первых, пример:

 <всплывающее окно>
  
    
    
    
  

 

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

Элемент popupset окружает все объявление всплывающего меню. Это общий контейнер для всплывающих окон, который не является обязательным. Он не отображается на экране, а вместо этого используется как заполнитель, в котором вы объявляете все свои всплывающие окна. Как следует из названия popupset , вы можете поместить в него несколько объявлений всплывающих окон. Просто добавьте дополнительные после первого элемента menupopup . В файле может быть несколько всплывающих окон , но обычно у вас будет только одно.

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

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

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

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

Пример 1 : Исходный код

 <всплывающее окно>
  
    
    
    
  



  
 

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

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

Всплывающие подсказки

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

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

Пример 2 : Исходный код

 

У этих двух кнопок есть всплывающая подсказка.Первый использует стиль всплывающей подсказки по умолчанию. Второй использует настраиваемую всплывающую подсказку с другим цветом фона и стилизованным текстом. Всплывающая подсказка связана с кнопкой «Еще» с помощью атрибута tooltip , который установлен на соответствующий id элемента всплывающей подсказки . Обратите внимание, что элемент всплывающей подсказки по-прежнему размещается внутри элемента всплывающего окна , как и другие типы всплывающих окон.

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

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

after_start
Всплывающее окно появляется под элементом с выравниванием левого края элемента и всплывающего окна. Если всплывающее окно больше элемента, оно расширяется вправо. Это значение, используемое для раскрывающихся меню, связанных с кнопками браузера «Назад» и «Вперед».
after_end
Всплывающее окно появляется под элементом с выравниванием правого края элемента и всплывающего окна.
before_start
Всплывающее окно появляется над элементом с выравниванием левого края элемента и всплывающего окна.
до_конца
Всплывающее окно появляется над элементом с выравниванием правого края элемента и всплывающего окна.
end_after
Всплывающее окно появляется справа от элемента, при этом нижние края элемента и всплывающее окно выровнены.
end_before
Всплывающее окно появляется справа от элемента, при этом верхние края элемента и всплывающее окно выровнены.
start_after
Всплывающее окно появляется слева от элемента с выровненными нижними краями элемента и всплывающим окном.
начало_до
Всплывающее окно появляется слева от элемента, при этом верхние края элемента и всплывающее окно выровнены.
перекрытие
Всплывающее окно появляется поверх элемента.
at_pointer
Всплывающее окно появляется в позиции указателя мыши (at_pointer в настоящее время не реализован по отношению к указателю мыши. В настоящее время он отображается в верхней части привязки).
after_pointer
Всплывающее окно появляется в том же горизонтальном положении, что и указатель мыши, но под элементом. Так появляются всплывающие подсказки (after_pointer в настоящее время не реализован по отношению к указателю мыши. В настоящее время он смещает 21 пиксель по вертикали от привязки, см. Ошибка 619887).

Добавляя атрибут position к всплывающему элементу, вы можете точно указать, где появляется всплывающее окно. Вы не можете указать точное положение в пикселях. Атрибут position может использоваться со всеми тремя типами всплывающих окон, хотя вы, вероятно, не измените значение для всплывающих подсказок. Пример ниже демонстрирует создание кнопки возврата со всплывающим меню:

Пример 3 : Исходный код

 <всплывающее окно>
  
    
    
  


Наш пример поиска файлов

Давайте добавим простое всплывающее меню в диалог поиска файлов.Для простоты мы просто скопируем содержимое меню «Правка». Пусть при нажатии на первую панель вкладок появляется всплывающее окно:

 <всплывающее окно>
  
    
    
    
  



.
.
.


 

Здесь к первой панели вкладок добавлено простое всплывающее окно, похожее на меню редактирования. Если вы щелкните правой кнопкой мыши (на Macintosh, удерживая нажатой клавишу «Control») в любом месте первой панели, появится всплывающее окно. Однако всплывающее окно не появится, если вы щелкните в другом месте. Обратите внимание, что у текстового поля есть собственное встроенное всплывающее меню, которое переопределит указанное нами.

Наш пример поиска файлов на данный момент : Source View

Далее мы рассмотрим, как создавать прокручиваемые меню.

Как создать раскрывающееся меню в HTML

В HTML мы можем легко создать раскрывающееся меню в документе Html, используя следующие различные способы:

  1. Использование HTML-формы
  2. Использование внутреннего CSS

Использование HTML-формы

Если мы хотим создать раскрывающееся меню в документе Html с помощью формы, мы должны выполнить шаги, указанные ниже.Используя эти шаги, мы можем легко создать раскрывающееся меню:

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

<Голова> <Название> Создайте раскрывающееся меню с помощью HTML-формы <Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в HTML-документе.И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью формы Html.

Шаг 2: Теперь мы должны поместить курсор в ту точку тега тела документа Html, где мы хотим показать раскрывающееся меню. Затем мы должны ввести тег

в этот момент.

<Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в документе Html. И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью формы Html.<форма>

Шаг 3: Теперь мы должны определить теги

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

<форма> <выбор>

Шаг 5: И, наконец, мы должны сохранить файл Html, а затем запустить файл.

<Голова> <Название> Создайте раскрывающееся меню с помощью HTML-формы <Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в HTML-документе. И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью формы Html. <форма> <выбор>

Проверить это сейчас

Вывод вышеуказанного HTML-кода показан на следующем снимке экрана:

Использование внутреннего CSS

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

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

Шаг 2: Теперь мы должны поместить курсор сразу после закрытия тега заголовка в тег заголовка документа Html, а затем определить стили внутри тега

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

. падать { дисплей: встроенный блок; позиция: относительная }

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

.dropdown-content { позиция: абсолютная; цвет фона: светло-серый; минимальная ширина: 200 пикселей; дисплей: нет; z-индекс: 1; }

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

.dropdown-content a { черный цвет; отступ: 12 пикселей 16 пикселей; текстовое оформление: нет; дисплей: блок; }

Шаг 6: И, наконец, в теге стиля мы должны отредактировать поведение раскрывающегося меню при наведении курсора. Итак, мы можем легко использовать следующий код в нашем теге стиля для редактирования.

.dropdown-content a: hover { цвет фона: оранжевый; } . dropdown: hover .dropdown-content { дисплей: блок; } .dropdown: hover .dropbtn { цвет фона: серый; }

Шаг 7: Теперь нам нужно поместить курсор в тег тела, где мы хотим показать раскрывающееся меню. Затем мы должны вставить следующий код в тег body.

Шаг 8: И, наконец, мы должны сохранить файл Html, а затем запустить файл в браузере.

<Голова> <Название> Создайте раскрывающееся меню с помощью внутреннего CSS <стиль> .dropbtn { цвет фона: желтый; черный цвет; отступ: 10 пикселей; размер шрифта: 12 пикселей; } .падать { дисплей: встроенный блок; позиция: относительная } . dropdown-content { позиция: абсолютная; цвет фона: светло-серый; минимальная ширина: 200 пикселей; дисплей: нет; z-индекс: 1; } .dropdown-content a { черный цвет; отступ: 12 пикселей 16 пикселей; текстовое оформление: нет; дисплей: блок; } .dropdown-content a: hover { цвет фона: оранжевый; } .dropdown: hover .dropdown-content { дисплей: блок; } .dropdown: hover .dropbtn { цвет фона: серый; } <Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в HTML-документе. И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью внутреннего CSS.

Проверить это сейчас

Вывод вышеуказанного Html-кода показан на следующем снимке экрана:


раскрывающихся списков · Bootstrap

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

Обзор

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

Выпадающие списки созданы на основе сторонней библиотеки Popper.js, которая обеспечивает динамическое позиционирование и обнаружение области просмотра. Обязательно включите popper.min.js перед загрузкой JavaScript в Bootstrap или используйте загрузочную программу .bundle.min.js / bootstrap.bundle.js , который содержит Popper.js. Popper.js не используется для размещения раскрывающихся списков на панелях навигации, хотя динамическое позиционирование не требуется.

Если вы создаете наш JavaScript из исходного кода, для него требуется util.js .

Доступность

Стандарт WAI ARIA определяет фактический виджет role = "menu" , но это специфично для меню, подобного приложениям, которое запускает действия или функции. ARIA Меню могут содержать только пункты меню, пункты меню флажков, пункты меню с переключателями, группы переключателей и подменю.

С другой стороны, выпадающие списки

Bootstrap имеют общий характер и применимы к различным ситуациям и структурам разметки. Например, можно создавать раскрывающиеся списки, содержащие дополнительные входные данные и элементы управления формой, такие как поля поиска или формы входа. По этой причине Bootstrap не ожидает (и не добавляет автоматически) ни один из атрибутов role и aria- , необходимых для истинных меню ARIA .Авторы должны сами включить эти более конкретные атрибуты.

Однако Bootstrap добавляет встроенную поддержку для большинства стандартных взаимодействий с меню клавиатуры, таких как возможность перемещаться по отдельным элементам .dropdown-item с помощью клавиш курсора и закрывать меню с помощью клавиши ESC .

Примеры

Оберните переключатель раскрывающегося списка (ваша кнопка или ссылка) и раскрывающееся меню в .dropdown или другой элемент, который объявляет position: relative; .Выпадающие списки можно запускать из элементов или

И с элементами :

    

Самое приятное то, что вы можете сделать это и с любым вариантом кнопок:

  
  

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

Аналогичным образом создайте раскрывающиеся списки с разделенными кнопками с практически такой же разметкой, что и раскрывающиеся списки с одной кнопкой, но с добавлением . dropdown-toggle-split для правильного интервала вокруг выпадающего курсора.

Мы используем этот дополнительный класс, чтобы уменьшить горизонтальный отступ по обе стороны от каретки на 25% и удалить margin-left , который добавляется для обычных раскрывающихся списков кнопок. Эти дополнительные изменения удерживают курсор в центре разделенной кнопки и обеспечивают область нажатия более подходящего размера рядом с основной кнопкой.

Вторичный Переключить раскрывающийся список
  

Калибр

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

  
...
...
...
. ..

Выпадающий вариант

Запуск раскрывающихся меню над элементами путем добавления .dropup к родительскому элементу.

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

Вариант Dropright

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

Разделить вертикальное положение Переключить Dropdright
  

Вариация капли

Триггер в раскрывающемся меню слева от элементов путем добавления .dropleft родительскому элементу.

  

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

По умолчанию раскрывающееся меню автоматически располагается на 100% сверху и слева от своего родителя.Добавьте .dropdown-menu-right к .dropdown-menu , чтобы выровнять раскрывающееся меню по правому краю.

Внимание! Выпадающие списки размещаются благодаря Popper.js (кроме случаев, когда они содержатся в навигационной панели).

  

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

    

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

    

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

  
<форма>
Впервые здесь? Зарегистрироваться Забыли пароль?
  <форма>
  
com ">

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

    

Добавьте .disabled к элементам в раскрывающемся списке, чтобы пометил их как отключенные .

    

Использование

С помощью атрибутов данных или JavaScript плагин раскрывающегося списка переключает скрытый контент (раскрывающиеся меню) путем переключения . показать класс в элементе родительского списка. Атрибут data-toggle = "dropdown" используется для закрытия раскрывающихся меню на уровне приложения, поэтому рекомендуется всегда использовать его.

На устройствах с сенсорным экраном открытие раскрывающегося списка добавляет пустые ( $ .noop ) обработчики mouseover к непосредственным потомкам элемента . Этот, по общему признанию, уродливый хакер необходим, чтобы обойти причуду в делегировании событий iOS, которая в противном случае помешала бы нажатию где-нибудь за пределами раскрывающегося списка запускать код, закрывающий раскрывающийся список.После закрытия раскрывающегося списка эти дополнительные пустые обработчики mouseover удаляются.

Через атрибуты данных

Добавьте data-toggle = "dropdown" к ссылке или кнопке, чтобы переключить раскрывающийся список.

  
. ..

Через JavaScript

Вызов раскрывающихся списков через JavaScript:

  $ ('.dropdown-toggle '). dropdown ()  
.
data-toggle = "dropdown" все еще требуется

Независимо от того, вызываете ли вы раскрывающийся список с помощью JavaScript или вместо этого используете data-api, data-toggle = "dropdown" всегда должен присутствовать в элементе триггера раскрывающегося списка.

Опции

Параметры можно передавать через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя опции к data- , как в data-offset = "" .

Номер
Имя Тип По умолчанию Описание
смещение | строка | функция 0 Смещение раскрывающегося списка относительно его цели. Дополнительные сведения см. В документации по смещению Popper.js.
откидной логический правда Разрешить разворачивание раскрывающегося списка в случае перекрытия ссылочного элемента.Для получения дополнительной информации обратитесь к документации Popper.js.
граница строка | элемент ‘scrollParent’ Граница ограничения переполнения раскрывающегося меню. Принимает значения 'viewport' , 'window' , 'scrollParent' или ссылку HTMLElement (только JavaScript). Для получения дополнительной информации см. Документацию PreventOverflow Popper.js.

Обратите внимание, когда для границы задано любое значение, отличное от 'scrollParent' , к применяется стиль position: static .выпадающий контейнер .

Методы

Метод Описание
$ (). Раскрывающийся список ('переключение') Переключает раскрывающееся меню данной панели навигации или навигации с вкладками.
$ (). Раскрывающийся список («обновление») Обновляет положение раскрывающегося списка элемента.
$ (). Раскрывающийся список ('удалить') Уничтожает раскрывающийся список элемента.

События

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

Показан
Событие Описание
показать.bs. Выпадающий Это событие запускается немедленно при вызове метода экземпляра шоу.
.bs.dropdown Это событие вызывается, когда раскрывающийся список становится видимым для пользователя (ожидает завершения переходов CSS).
hide.bs.dropdown Это событие запускается сразу после вызова метода экземпляра hide.
hidden.bs.dropdown Это событие вызывается, когда раскрывающийся список перестает быть скрытым от пользователя (будет ожидать завершения переходов CSS).
  $ ('# myDropdown'). On ('show.bs.dropdown', function () {
  // сделай что-нибудь…
})  

17 Выпадающие меню CSS

Коллекция отобранных вручную бесплатных выпадающих меню HTML и CSS примеров кода. Обновление коллекции за октябрь 2018 г. 3 новинки.

  1. Меню CSS
  2. Выпадающие списки начальной загрузки
Автор
  • Зеландия
О коде

Расплавленное меню

Он сочетает в себе раскрывающееся меню CSS и просачивающиеся эффекты жидкого пламени.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Адаптивный: нет

Зависимости: —

Автор
  • Марко Бесаньи
О коде

Раскрывающееся меню HTML и CSS

Совместимые браузеры: Chrome, Firefox, Opera, Safari

Зависимости: —

Автор
  • Халида Астатин
О коде

Меню градиента

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

Совместимые браузеры: Chrome, Firefox, Opera, Safari

Зависимости: font-awesome.css

Автор
  • Мохамед Айман
О коде

Главное меню

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

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

отзывчивый: да

Зависимости: ionicons.css

О коде

Меню CSS

No JS — обязательно загляните в мобильное меню.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Винсент Дюран
О коде

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

HTML и CSS выпадающее меню с приятным эффектом.

Совместимые браузеры: Chrome, Firefox, Opera, Safari

Зависимости: —

О коде

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

Горизонтальное выпадающее меню на чистом CSS с красивыми переходами и красивой палитрой.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

отзывчивый: да

Зависимости: ionicons. css

О коде

Раскрывающееся меню

Выпадающее меню Cool HTML & CSS.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: font-awesome.css

Автор
  • Хесус Родригес
О коде

Необычное меню

Необычное выпадающее меню в HTML и CSS. На основе https://dribbble.com/shots/1075480-Ui-Kit-Hotel

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: font-awesome.css

Автор
  • sean_codes
О коде

Рекурсивная навигация при наведении

Только CSS-рекурсивная навигация при наведении.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Руслан Пивоваров
О коде

Классные эффекты выпадающего меню

Cool раскрывающееся меню чистые эффекты CSS.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Сатиш Кумар
О коде

Раскрывающееся меню

Выпадающее меню на чистом CSS.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Роберт Боргези
О коде

Простое раскрывающееся меню на чистом CSS

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

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Коннор Брассингтон
О коде

Простое раскрывающееся меню на чистом CSS

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

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

О коде

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

Анимированные выпадающие меню CSS.

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Каталин Рошу
О коде

Выпадающее меню зигзаг

Это еще одна концепция выпадающего меню .

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

Автор
  • Джон Урбанк
О коде

Адаптивное меню

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

Совместимые браузеры: Chrome, Edge, Firefox, Opera, Safari

Зависимости: —

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

Тема: HTML / CSSPrev | След.

Ответ: Используйте CSS

: hover псевдокласс

Если вы просто хотите показывать и скрывать раскрывающееся меню при наведении курсора мыши, вам не нужен JavaScript.Вы можете сделать это, просто используя свойство CSS display и псевдокласс : hover .

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

  



 Показать скрыть раскрывающийся список с помощью CSS 
<стиль>
    ul {
        отступ: 0;
        стиль списка: нет;
        фон: # f2f2f2;
    }
    ul li {
        дисплей: встроенный блок;
        положение: относительное;
        высота строки: 21 пикс;
        выравнивание текста: слева;
    }
    ul li a {
        дисплей: блок;
        отступ: 8px 25px;
        цвет: # 333;
        текстовое оформление: нет;
    }
    ul li a: hover {
        цвет: #fff;
        фон: # 939393;
    }
    ul li ul. падать {
        минимальная ширина: 100%; / * Устанавливаем ширину раскрывающегося списка * /
        фон: # f2f2f2;
        дисплей: нет;
        позиция: абсолютная;
        z-индекс: 999;
        слева: 0;
    }
    ul li: hover ul.dropdown {
        дисплей: блок; / * Показать раскрывающийся список * /
    }
    ul li ul.dropdown li {
        дисплей: блок;
    }



     
  

Связанные вопросы и ответы

Вот еще несколько часто задаваемых вопросов по этой теме:

Popup | Семантический интерфейс

Popup включает в себя как версию javascript (с полным набором функций), так и ограниченную версию только для CSS, которые могут быть полезны на страницах, которые используют много всплывающих окон, или с такими библиотеками, как React или Meteor, чтобы избежать обработки жизненного цикла DOM.

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

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

Элемент может указывать HTML для всплывающего окна

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

Элемент может отображать всплывающее окно, которое уже включено на страницу

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

Элемент может указывать простую всплывающую подсказку, которая может отображаться без javascript

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

Верхний левый

Верхний центр

В правом верхнем углу

Нижний левый

Внизу по центру

Внизу справа

Правый Центр

Левый Центр

Верхний левый

Верхний центр

В правом верхнем углу

Нижний левый

Внизу по центру

Внизу справа

Правый Центр

Левый Центр

Всплывающее окно может предоставить более базовое форматирование

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

This is a wide pop-up which allows for lots of content with additional space. You can fit a lot of words here and the paragraphs will be pretty wide.» data-variation=»wide»/>

Всплывающее окно с жидкостью займет всю ширину своего смещенного контейнера

Показать всплывающее окно с жидкостью

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

Показать текущее всплывающее окно

Цвет всплывающего окна может быть инвертирован

Всплывающее окно инициализируется на активирующем элементе

$ (‘. activating.element ‘) .неожиданно возникнуть() ;

Использование уже существующего всплывающего окна позволяет вам включать в всплывающее окно сложный HTML.

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

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

$ (‘. кнопка’) .неожиданно возникнуть({ inline: true }) ;

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

$ (‘. кнопка’) .неожиданно возникнуть({ всплывающее окно: ‘.special.popup’ }) ;

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

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

  • Использование HTML заголовок атрибут
  • Использование data-content attribute
  • Использование data-html для определенного HTML
  • Использование свойства содержимого при инициализации всплывающего окна

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

  • data-variant : всплывающий вариант для использования
  • data-offset : коррекция смещения пикселей для всплывающего окна
  • data-position : всплывающее окно стороны для позиции на

$ (‘. ui.popup ‘) .неожиданно возникнуть({ title: ‘Заголовок всплывающего окна’, content: «Здравствуйте, я всплывающее окно» }) ;

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

$ (‘. ваш.элемент’) .popup (‘имя поведения’, аргументOne, аргументTwo) ;

Поведение Описание
показать Показывает всплывающее окно
скрыть Скрывает всплывающее окно
скрыть все Скрывает все видимые всплывающие окна на странице
получить всплывающее окно Возвращает текущий элемент popup dom
изменить содержимое (html) Изменяет текущее содержимое всплывающего окна
переключатель Переключает видимость всплывающего окна
виден Возвращает, отображается ли всплывающее окно
скрыто Возвращает, скрыто ли всплывающее окно
существует Возвращает, создано ли всплывающее окно и вставлено ли оно на страницу
репозиция Настраивает всплывающее окно при изменении размера содержимого (необходимо только для всплывающих окон по центру)
заданное положение (положение) Перемещает всплывающее окно
уничтожить Удаляет всплывающее окно со страницы и удаляет все события
удалить всплывающее окно Удаляет всплывающее окно со страницы

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

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

$ (‘. граница.пример. кнопка’) .неожиданно возникнуть({ граница: ‘.boundary.example .segment’ }) ;

Hover Me

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

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

Использование параметра inline: true позволит Semantic отобразить следующий родственный элемент ui popup после активатора.

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

$ (‘. пример .menu .browse’) .неожиданно возникнуть({ inline: true, hoverable: правда, позиция: «внизу слева», задерживать: { показать: 300, скрыть: 800 } }) ;

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

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

$ (‘. пример .custom.button’) .неожиданно возникнуть({ всплывающее окно: $ (‘. custom.popup’), по щелчку’ }) ;

Можно указать событие запуска всплывающего окна

$ (‘.пример .teal.button ‘) .неожиданно возникнуть({ по щелчку’ }) ; $ (‘. пример ввода’) .неожиданно возникнуть({ на: «фокус» }) ;

Нажмите Me

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

$ (‘. test.button’) .неожиданно возникнуть({ позиция: ‘правый центр’, цель: ‘.test.image’, title: ‘Моя любимая собака’, content: «Моя любимая собака любит других собак так же сильно, как они сами» }) ;

Hover Me

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

Использование inline позволит вашим всплывающим окнам перемещаться туда, где другие всплывающие окна не могут быть, например, внутри фиксированных или абсолютно позиционированных элементов

Если вы хотите стилизовать каждое всплывающее окно индивидуально, имеет смысл оставить popup inline: true . Если вас беспокоит, что ваше всплывающее окно может по ошибке наследовать стили, которых не должно, вы должны установить inline: false .

/ * это стилизует всплывающее окно, только если inline истинно * / .example .popup { цвет: # FF0000; }

$ (‘. inline.icon’) .неожиданно возникнуть({ inline: true }) ;

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

Положение всплывающего окна можно настроить вручную, указав свойство смещения с помощью data-offset = "value"

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

Дом

$ (‘. выбор’) .падать({ onChange: function (значение) { $ (‘. demo.icon’) .неожиданно возникнуть({ переход: значение }) .popup (‘переключатель’) ; } }) ;

Учебное пособие по всплывающему меню

поможет вам создать всплывающее меню.

Как создать всплывающее меню и добавить его на сайт?

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

Всплывающее меню выглядит так:

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

В настоящее время многие известные компании используют всплывающее меню в качестве панели навигации для навигации по своим веб-сайтам, например Microsoft, Adobe, Amazon и т. Д. Но как я могу создать собственное всплывающее меню? Наберитесь терпения, я покажу вам, как создать всплывающее меню с помощью Sothink DHTML Menu.

Sothink DHTML Menu позволяет создать всплывающее меню для компактного веб-сайта. Благодаря встроенным шаблонам и богатым предустановленным стилям вы можете создать всплывающее меню, удобное для SE, в один клик.Полностью настройте всплывающее меню в соответствии с веб-дизайном. Свободно интегрируйтесь с веб-редакторами для создания всплывающих меню.

Скачать Sothink DHTML Menu >>

Следуй за мной, чтобы открыть всплывающее меню сейчас:

  1. Запуск всплывающего меню со встроенными шаблонами Запуск меню Sothink DHTML. Окна шаблонов открываются, и вы можете выбрать всплывающее меню «Простой> Классическое серебро».

  2. Добавьте элементы подменю для этого всплывающего меню

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

  3. Изменить текст и ссылку для всплывающего меню

    Измените текст и ссылку для своего сайта. Щелкните текст на панели меню, выберите параметр «Пункт меню> Общие» и отредактируйте текст и ссылку на панели свойств ниже.
    4. Задайте папку ресурсов, чтобы всплывающее меню работало в интрасети или Интернете.

    Задайте папку ресурсов для сохранения файлов JS и изображений в конкретный каталог, чтобы всплывающее меню отображалось правильно.Введите «Global> Resource Folder», чтобы установить их.

    5. Опубликовать всплывающее меню и отобразить его на веб-странице

    Опубликуйте файлы ресурсов, код меню или код меню JavaScript в определенной папке; и вставьте два фрагмента кода в теги «head» и «body» на веб-странице.

    Отметьте кнопку на панели инструментов и выберите опцию «Просмотреть / скопировать код…»; откроется диалоговое окно, следуйте советам, чтобы скопировать и вставить коды на веб-страницу; и отметьте опцию «Копировать файлы ресурсов», чтобы скопировать ресурс в указанную папку.

    Завершите вышеуказанные шаги, вы можете просмотреть меню локально; и загрузите все файлы ресурсов на веб-сервер, чтобы просмотреть всплывающее меню в Интернете.

Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *