html — Как правильно сделать выпадающее меню на flexbox?
Вопрос задан
Изменён 7 месяцев назад
Просмотрен 151 раз
Есть вот такое выпадающее меню на flexbox-ах.Но оно не работает как нужно. При наведении на пункт с выпадающими подпунктами, происходит дополнение данного flex контейнера и эти подпункты сдвигаются вниз и названия подпунктов располагаются вниз, тем самым сдвигая всё меню за пределы обозначеного контейнера. Возможно ли сделать так, чтобы подпункты сдвигались не вниз относительно родителя, а право под другие пункты? Возможно ли такое на флексбоксах? При этом нужно чтобы меню было на всю ширину контейнера. Сама разметка и css.
*{ margin: 0; padding: 0; } body { margin: 0; padding: 0; font-family: 'Montserrat', sans-serif; line-height: 1.5; } .container{ width: 100%; max-width: 1140px; margin: 0 auto; border: 3px solid green; } .header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; } .header .menu ul { display: flex; list-style: none; } .menu{ width: 100%; } .header .menu ul{ justify-content: space-between; } .header .menu ul li { margin: 22px 55px 22px 0px; } .header .menu ul li:last-child{ margin-right: 0px; } .header .menu ul a { text-transform: lowercase; text-decoration: none; font-size: 20px; font-weight: 400; color: #4F4F4F; } /*---Выпадающее меню---*/ .header .menu ul ul{ display: none; top: 100%; } .header .menu ul li:hover > ul{ display: inherit; } . header .menu ul ul li{ min-width: 225px; float: none; display: list-item; position: relative; } /*---Hover---*/ .header .menu ul li a:hover { font-weight: 700; }
<div> <div> <div> <ul> <li><a href="#">компания</a> <ul> <li><a href="#">LoremIpsum</a></li> <li><a href="#">LoremIpsumLoremIpsumLoremIpsumLoremIpsum</a></li> <li><a href="#">LoremIpsumLoremIpsum</a></li> </ul> </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> </div> </div> </div>
На скринах зелёным выделен контейнер для контента. На первом — меню до наведения, на втором -после. Видно что выпадает меню из разметки контейнера.
- html
- css
- flexbox
- меню
- разметка
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Выпадающие меню · Bootstrap на русском
Более десятка повторно используемых компонентов построены так, чтобы обеспечить кнопки, выпадающие меню, группы ввода, навигации, оповещения, и многое другое.
Раскрывающиеся списки переключаемой, контекстная накладки для отображения списков ссылок и более. Они сделаны интерактивными с включенным Bootstrap выпадающего JavaScript плагин. Они переключаются нажатием, не парит; это преднамеренное дизайнерское решение.
Содержание
- Содержание
- Примеры
- Одиночная кнопка выпадающего меню
- Split кнопка с выпадающим меню
- Изменение размера
- Вариант списка сверху
- Использование
- С помощью данных атрибутов
- Через JavaScript
- Варианты
- Методы
- События
Примеры
Переключение обернуть выпадающем (ваша кнопка или ссылка) и в выпадающем меню в .dropdown
, или другой элемент, который заявляет, position: relative;
. Раскрывающиеся списки могут быть вызваны из <a>
или <button>
элементы, чтобы лучше соответствовать вашим потенциальным потребностям.
Одиночная кнопка выпадающего меню
Ни один .btn
можно превратить в выпадающем тумблер с некоторыми изменениями разметки. Вот как вы можете положить их на работу с <button>
элементы:
<div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown button </button> <div aria-labelledby="dropdownMenuButton"> <a href="#">Action</a> <a href="#">Another action</a> <a href="#">Something else here</a> </div> </div>
<a>
элементами:<div> <a href="http://example.com" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <div aria-labelledby="dropdownMenuLink"> <a href="#">Action</a> <a href="#">Another action</a> <a href="#">Something else here</a> </div> </div>
Самое приятное, что вы можете сделать это с любым вариантом кнопки:
<!-- Пример одной кнопки опасности - > <div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Action </button> <div> <a href="#">Action</a> <a href="#">Another action</a> <a href="#">Something else here</a> <div></div> <a href="#">Separated link</a> </div> </div>
Split кнопка с выпадающим меню
Аналогичным образом создайте сплит кнопки раскрывающиеся списки с практически такой же разметки, как одной кнопки раскрывающиеся списки, но с добавлением . dropdown-toggle-split
для правильного шрифта выпадающего каре.
Мы используем эту экстра-класса, чтобы уменьшить горизонтальную padding
по обе стороны от каретки на 25% и удалите margin-left
, который добавляется для обычной кнопки выпадающих меню. Эти изменения держать курсор по центру кнопку разделить и обеспечить более точного размера нажмите рядом с основной кнопкой.
<!-- Пример сплит опасности - > <div> <button type="button">Action</button> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span>Toggle Dropdown</span> </button> <div> <a href="#">Action</a> <a href="#">Another action</a> <a href="#">Something else here</a> <div></div> <a href="#">Separated link</a> </div> </div>
Изменение размера
Кнопка меню работы с кнопками всех размеров, в том числе по умолчанию и секущихся выпадающих кнопок.
<!-- Большие группы (кнопка по умолчанию и сплит) --> <div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Large button </button> <div> ... </div> </div> <div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Large button </button> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span>Toggle Dropdown</span> </button> <div> ... </div> </div> <!-- Небольшие группы (кнопка по умолчанию и сплит) --> <div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Small button </button> <div> ... </div> </div> <div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Small button </button> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span>Toggle Dropdown</span> </button> <div> . .. </div> </div>
Вариант списка сверху
Вызвать выпадающее меню над элементами, добавив .dropup
для родительского элемента.
<!-- Кнопка по умолчанию dropup --> <div> <button type="button">Dropup</button> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span>Toggle Dropdown</span> </button> <div> <!-- Ссылки выпадающего меню --> </div> </div> <!-- Кнопка сплит dropup --> <div> <button type="button"> Split dropup </button> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span>Toggle Dropdown</span> </button> <div> <!-- Ссылки выпадающего меню --> </div> </div>
Исторически выпадающем меню had чтобы быть одной, но это уже не в случае с v4. Теперь при необходимости можно использовать <button>
элементы в раскрывающихся списках, а не просто <a>
ы.
<div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown </button> <div aria-labelledby="dropdownMenu2"> <button type="button">Action</button> <button type="button">Another action</button> <button type="button">Something else here</button> </div> </div>
По умолчанию, выпадающее меню автоматически устанавливается 100% от верхнего и вдоль левого края его родителя. Добавьте .dropdown-menu-right
к .dropdown-menu
для выравнивание выпадающего меню справа.
Внимание! меню расположены только с CSS и может потребоваться некоторые дополнительные стили для точного выравнивания.
<div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> This dropdown's menu is right-aligned </button> <div> <button type="button">Action</button> <button type="button">Another action</button> <button type="button">Something else here</button> </div> </div>
Добавьте заголовок чтобы маркировать участки в любом выпадающего меню.
<div> <h6>Dropdown header</h6> <a href="#">Action</a> <a href="#">Another action</a> </div>
Отдельные группы связанных элементов меню с делителем.
<div> <a href="#">Action</a> <a href="#">Another action</a> <a href="#">Something else here</a> <div></div> <a href="#">Separated link</a> </div>
Добавить .disabled
для пунктов в раскрывающемся меню стиль их как отключенные.
<div> <a href="#">Regular link</a> <a href="#">Disabled link</a> <a href="#">Another link</a> </div>
Использование
Через атрибуты данных или JavaScript, выпадающее плагин переключает скрытое содержание (выпадающие меню), переключая .open
класс родительского элемента списка.
На мобильных устройствах, открывая выпадающий добавляет .dropdown-backdrop
как площадь нажатия для закрытия выпадающего меню При нажатии за меню требование для правильной поддержки iOS. Это означает, что переход от открытого выпадающего меню в другое меню требуется дополнительное нажатие на мобильный.
Примечание: data-toggle="dropdown"
атрибут является основанием для закрытия выпадающего меню на уровне приложения, так что это хорошая идея, чтобы всегда использовать его.
С помощью данных атрибутов
Добавить data-toggle="dropdown"
на ссылку или кнопку для переключения в меню.
<div> <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown trigger </button> <div aria-labelledby="dLabel"> ... </div> </div>
Через JavaScript
Вызвать меню через JavaScript:
$('. dropdown-toggle').dropdown()
Варианты
None.
Методы
Способ | Описание |
---|---|
$().dropdown('toggle') | Переключает меню данной панели навигации и вкладок навигации. |
События
Все выпадающие события обстреляли .dropdown-menu
’родительский элемент S и relatedTarget
свойство, значением которого является переключение элемента привязки.
Событие | Описание |
---|---|
show.bs.dropdown | Это событие немедленно срабатывает при вызове метода экземпляра-шоу называется. |
shown.bs.dropdown | Это событие запускается, когда выпадающее меню становится видимым для пользователя (будет ждать CSS переходы для завершения). |
hide.bs.dropdown | Это событие немедленно уволили, когда скрывать метод экземпляра называется. |
hidden.bs.dropdown | Это событие запускается, когда в списке есть, который скрыт от пользователя (будет ждать CSS переходы для завершения). |
$('#myDropdown').on('show.bs.dropdown', function () { // сделать что-то... })
Самый простой способ создать его для своего сайта!
КСС
27 сентября 2022 г.
Линас Л.
4 мин Чтение
Выпадающее меню содержит список страниц и подстраниц. Пользователи могут получить доступ к его содержимому, щелкнув или наведя курсор на меню.
Этот элемент дизайна уменьшает беспорядок кнопок, ссылок и текста, что полезно для улучшения пользовательского интерфейса веб-сайта или приложения на небольших экранах.
Продолжайте читать, поскольку мы рассмотрим шаги по созданию выпадающего меню с использованием HTML и CSS. Вы также научитесь применять стили к недавно созданному раскрывающемуся меню, чтобы оно соответствовало брендингу вашего проекта.
Загрузить полную памятку по CSS
Для этого руководства требуется текстовый редактор для создания файла HTML и CSS, содержащего код раскрывающегося меню. Как вариант, вы можете сделать это через Файловый менеджер вашей панели управления хостингом. В следующем руководстве по раскрывающемуся меню будет использоваться последний метод.
Шаг 1. Создание файла с кодом HTML
Для начала создайте файл HTML для фактического содержания и синтаксиса раскрывающегося меню. Перейдите к диспетчеру файлов с панели управления hPanel и создайте новый файл с именем 9.0019 menu.html внутри каталога public_html .
Файл menu.html будет содержать элементы выпадающего меню — один родительский элемент с пятью пунктами меню. Каждое подменю будет перенаправлять пользователей на разные страницы вашего сайта.
Добавьте в файл menu.html следующий код:
дел>
Классы dropdown, mainmenubtn, и dropdown-child представляют разные элементы HTML. CSS будет использовать их для доступа к определенному элементу и изменения его дизайна.
Вот как будет выглядеть HTML-меню без каких-либо правил CSS:
Совет профессионала
Не забудьте заменить ссылки внутри атрибутов href URL-адресами страниц вашего веб-сайта и переименовать подменю, чтобы отразить фактическое содержание страницы.
Шаг 2. Добавление CSS и создание эффекта раскрывающегося списка
Теперь, когда у вас есть элементы HTML для работы, давайте создадим эффект раскрывающегося списка и правила CSS для каждого из них.
Создайте внутреннюю таблицу стилей в файле menu.html , поместив следующий код в элемент :
.mainmenubtn{цвет фона:небесно-голубой;белый цвет;граница:нет;курсор:указатель;отступ:20 пикселей;верхняя граница:20px}.mainmenubtn:наведите{цвет фона:синий}.падать{положение:родственник;отображение:встроенный блок}.dropdown-ребенок{дисплей:нет;цвет фона:небесно-голубой;минимальная ширина:200 пикселей}.dropdown-ребенок{цвет синий;отступ:20 пикселей;текстовое оформление:нет;дисплей:блок}.dropdown:наведите курсор .dropdown-child{дисплей:блок}
Pro Tip
В этом примере стили CSS помещаются в один и тот же файл HTML (внутренняя таблица стилей). Используйте внешний CSS,связав HTML-документ с отдельным файлом CSS для упрощения модификации.
Имя класса .mainmenubtn содержит свойства CSS кнопки раскрывающегося списка. Он устанавливает цвет фона и шрифта кнопки и опускает границу. Свойство курсора определяет,что курсор мыши изменится на руку с вытянутым символом указательного пальца при наведении курсора на кнопку раскрывающегося списка.
Добавление селектора hover в класс .mainmenubtn определяет,как будет выглядеть раскрывающееся меню,когда пользователь наводит на него курсор.
Класс .dropdown устанавливает положение раскрывающегося меню. В приведенном выше примере правила CSS располагают элементы меню под родительским меню. Свойство inline-block заставляет их отображаться без разрыва строки,разделяющего их.
Класс .dropdown-child относится к фактическому содержимому выпадающего меню. Использование отображение значение нет делает подменю невидимыми. .dropdown:hover .dropdown-child превращает весь элемент в всплывающее меню.
Pro Tip
Не стесняйтесь экспериментировать с другими свойствами CSS,чтобы получить желаемый дизайн. Вы даже можете добавить JavaScript,чтобы создать адаптивное выпадающее меню с динамической анимацией.
Когда вы закончите,сохраните и загрузите файл. Вот как будет выглядеть выпадающее меню,когда вы откроете его в веб-браузере:
Доступно множество современных шаблонов раскрывающихся меню CSS,поэтому вам не нужно писать код с нуля. По крайней мере,они являются отличным источником вдохновения.
Следующий шаблон выпадающего меню от kkrueger использует HTML и CSS. Каждое родительское меню плавно расширяется при наведении,создавая динамичный и запоминающийся вид веб-страницы.
Другой пример взят из Бхакти Пасарибу. Он использует JavaScript для создания интерактивного выпадающего меню. Параметры отображаются с анимацией перелистывания при нажатии на родительское меню. Другая анимация заменяет родительское меню выбранным параметром,создавая плавный эффект перехода. Этот шаблон выпадающего меню отличается простотой и динамичностью.
Любителям минимализма может понравиться то,что может предложить Крис Ота. Его складное меню тонкое и не занимает слишком много места. Тем не менее,он ставит во главу угла пользовательский опыт. Вы можете легко заменить описания элементов списка значками,что еще больше усилит брендинг вашего сайта.
Если вы ищете более яркое меню с визуальными эффектами,мы рекомендуем проверить выпадающее меню Molten от Zealand. Он использует анимацию ключевых кадров CSS,чтобы создать привлекательное мерцающее пламя вокруг панели навигации.
Recursive Hover Nav от sean_codes предлагает мегаменю,не мешающее работе сайта.Многоуровневое выпадающее меню построено с использованием HTML,CSS и JavaScript.
При наведении указателя мыши на родительское меню появляются подменю с анимацией смены слайдов. Хотя в нем нет ярких эффектов,как в других примерах,этот шаблон более практичен,когда дело доходит до управления меню с большим количеством контента.
Pro Tip
При разработке выпадающего меню обязательно учитывайте удобство сайта для пользователей. Красиво оформленное выпадающее меню с помощью CSS не гарантирует удобство использования. В большинстве случаев меньше значит больше.
Выпадающее меню упрощает разработку эффективного пользовательского интерфейса. Это уменьшает количество элементов,загромождающих вашу веб-страницу,и при соответствующем дизайне улучшает эстетику сайта.
Вы можете создать выпадающее меню с нуля,используя HTML,CSS и JavaScript. В качестве альтернативы используйте один из множества шаблонов раскрывающегося меню,написанных профессиональными дизайнерами,и настройте его по своему усмотрению.
Мы надеемся,что эта статья помогла вам лучше понять,как создать раскрывающееся меню CSS. Удачи.
Линас начинал как агент по работе с клиентами,а сейчас является полнофункциональным веб-разработчиком и руководителем технической группы в Hostinger. Он увлечен тем,что предлагает людям первоклассные технические решения,но,несмотря на то,что ему нравится программировать,он втайне мечтает стать рок-звездой.
Подробнее от Линаса Л.
Как создать выпадающее меню в HTML с помощью CSS?
html9 месяцев назад
от Naima Aftab
Выпадающее меню — это способ,позволяющий пользователю изучить различные варианты,доступные ему/ей при использовании веб-сайта. Это несколько необходимый виджет при разработке веб-сайта. CSS позволяет создавать красивые выпадающие меню,которые в целом повышают удобство работы пользователей и украшают внешний вид вашего веб-сайта. Этот пост предназначен для обеспечения:
- Создание раскрывающегося списка
- Создание выпадающего меню
Приступим
Создание раскрывающегося списка
Часто вы,должно быть,видели,что когда вы наводите курсор мыши на фрагмент текста или кнопку на веб-сайте,появляется раскрывающийся список.Вот как это делается.
Пример
В этом примере показано создание раскрывающегося списка.
HTML
Click me
Чтобы сделать раскрывающийся список,прежде всего мы создали контейнер div для размещения содержимого раскрывающийся список внутри него,более того,чтобы открыть раскрывающийся список,мы использовали элемент
CSS
.dropdown{
позиция:относительная;
дисплей:встроенный блок;
}
Класс «раскрывающийся» был назначен первому контейнеру div,в который вложен весь контент. Мы установили его относительную позицию,чтобы при открытии выпадающего меню оно располагалось прямо под кнопкой.
CSS
.dropdown-content{
display:none;
цвет фона:белый дым;
ширина:100%;
отступ:15 пикселей;
}
Контейнеру div,содержащему выпадающее содержимое,присвоен класс «выпадающее содержимое».Кроме того,мы установили display на none,учитывая его ширину и отступы.
CSS
.dropdown:hover .dropdown-content{
display:block;
}
Кроме того,чтобы сделать выпадающее меню доступным для наведения,мы присвоили ему состояние :hover и установили его отображение на блокировку,чтобы оно отображалось под кнопкой.
И,наконец,мы также стилизовали нашу кнопку в соответствии с нашим желанием.
кнопка{
заполнение:5px;
цвет фона:пшеница;
семейство шрифтов:Lucida Sans;
}
Вывод
Выпадающий список успешно создан. Теперь приступим к созданию выпадающего меню.
Создание выпадающего меню
Выпадающее меню состоит из списка опций и открывается только тогда,когда пользователь наводит на него курсор мыши. Вы можете создать выпадающее меню на своем сайте с помощью CSS.Следуйте приведенному ниже примеру.
HTML
Здесь мы добавили теги привязки,чтобы предоставить несколько вариантов в раскрывающемся меню.
CSS
.dropbtn{
background-color:лосось;
цвет:белый;
ширина:100 пикселей;
отступ:18 пикселей;
граница:0;
размер шрифта:17 пикселей;
}
Во-первых,мы придаем нашей кнопке некоторый стиль,используя различные свойства CSS.
CSS
.dropdown{
позиция:относительная;
дисплей:встроенный блок;
ширина:160 пикселей;
}
Как уже объяснялось выше,мы установили относительную позицию элемента div с классом «раскрывающийся список»,чтобы при открытии раскрывающегося списка он располагался прямо под кнопкой.
CSS
.dropdown-content{
display:none;
цвет фона:белый дым;
ширина:100%;
}
Здесь мы используем некоторые базовые свойства CSS для оформления выпадающего содержимого.
CSS
.dropdown-content a{
display:block;
цвет:черный;
отступ:12px;
украшение текста:нет;
}
В приведенном выше коде CSS мы стилизуем ссылки,находящиеся внутри выпадающего меню. Мы настроили их отображение на блокировку,чтобы каждая ссылка отображалась на новой строке.
CSS
.dropdown:hover .dropbtn{
цвет фона:песочно-коричневый;
}
.dropdown-content a:hover{
background-color:светло-серый;
}
.dropdown:hover .dropdown-content{
display:block;
}
Здесь мы стилизуем эффекты наведения для кнопки меню и выпадающего меню.