html — Не работает выпадающее меню через CSS (hover)
Задать вопрос
Вопрос задан
Изменён 2 года 5 месяцев назад
Просмотрен 434 раза
Я только начала учиться, уже возникают небольшие проблемки:( Уже все перепробовала и перепроверила, не появляется выпадающее меню при наведении. Делала по уроку.
.root { list-style-type: none; display: inline-block; position: relative; padding: 10px 15px; background-color: #ccc; cursor: pointer; } .root:hover { position: relative; display: inline-block; background-color: aqua; } .root:hover .dropdown { display: block; // Вот тут не работает background-color: #ccc; } . dropdown { display: none; position: absolute; top: 54px; left: 48px; box-sizing: border-box; background-color: aquamarine; padding: 10px; width: 100%; } .dropdown>li { cursor: pointer; list-style: none; } .dropdown>li:hover { color: aqua; }
<body> <ul> <li>Меню</li> <ul> <li>1-й элемент</li> <li>2-й элемент</li> </ul> <li>Меню 2</li> <ul> <li>3-й элемент</li> <li>4-й элемент</li> </ul> </ul> </body>
- html
- css
- меню
- hover
Нужно было вложить .dropdown
в .root
.root { list-style-type: none; display: inline-block; position: relative; padding: 10px 15px; background-color: #ccc; cursor: pointer; } .root:hover { position: relative; display: inline-block; background-color: aqua; } . root:hover .dropdown { display: block; background-color: #ccc; } .dropdown { display: none; position: absolute; top: 54px; left: 48px; box-sizing: border-box; background-color: aquamarine; padding: 10px; width: 100%; } .dropdown>li { cursor: pointer; list-style: none; } .dropdown>li:hover { color: aqua; }
<body> <ul> <li>Меню <ul> // .dropdown находится внутри .root <li>1-й элемент</li> <li>2-й элемент</li> </ul> </li> <li>Меню 2 <ul> <li>3-й элемент</li> <li>4-й элемент</li> </ul> </li> </ul> </body>2
Зарегистрируйтесь или войдите
Регистрация через GoogleОтправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.
Выпадающее меню на Bootstrap 4 при наведении (событие hover)
- Рубрики
- WEB статьи
- Bootstrap
- Информация о материале
- Bootstrap
Как известно, стандартный dropdown список раскрывается только при нажатии на главный пункт меню.
display: none;
», и переходит в «display: block;
», когда срабатывает событие click и на оборот — чтобы скрыть, нужно опять нажать на меню.На примере меню из документации Bootstrap 4:
<nav>
<button type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span></span>
</button>
<div>
<ul>
<li>
<a href="#">Главная</a>
</li>
<li>
<a href="#">Один</a>
</li>
<li>
<a href="#">Два</a>
</li>
<li>
<a href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Три</a>
<div aria-labelledby="navbarDropdownMenuLink">
<a href="#">Три один</a>
<a href="#">Три два</a>
<a href="#">Три три</a>
</div>
</li>
</ul>
</div>
</nav>
В данном варианте, если вы просто поместите это меню на сайте, подключите все необходимые библиотеки, меню будет работать по клику.
Чтобы меню раскрывалось и скрывалось при наведении (событие hover), достаточно чуть подправить css файл bootstrap 4 или прописать это в своем файле стилей:
nav.navbar .dropdown:hover > .dropdown-menu {
display: block;
}
Теперь при наведении, нашему списку будет присваиваться свойство «block
» и он раскроется. Вот так легко это делается, не правда ли?
Чтобы это работало только на ПК версиях экранов, и не работало на мобильных устройствах, так как там просто отсутствует нормальная работа события hover. Я рекомендую прописать ниже еще вот такой код:
@media only screen and (max-device-width: 992px){
nav.navbar .dropdown:hover .dropdown-menu{
display: none;
}
}
Учтите, что этим вы не отменяете событие click – раскрытие меню по клику. Оно будет так же работать наравне и с наведением.
Как отключить событие click и оставить только событие hover, вы можете прочитать в этой статье:
Переход по ссылке главного (верхнего) меню раскрывающегося списка в Bootstrap 4
Всем удачи!
Добавить комментарий
Создание раскрывающихся меню для сенсорного экрана
Создание раскрывающихся меню для сенсорного экрана — Amazon Silk Поскольку Amazon Silk работает на устройстве с сенсорным экраном, он не обрабатывает псевдокласс CSS :hover
так же, как это делает настольный браузер. В десктопном браузере :hover
становится совпадением, когда вы наводите указатель на элемент на
который установлен :hover
. Это поведение полезно для раскрывающихся меню, поскольку вы
может создать меню, которое будет скрыто до тех пор, пока пользователь не наведет курсор на родительский элемент.
Давайте рассмотрим пример. Следующий HTML-документ содержит два ненумерованных списка, одна вложена в другую. Каждый элемент
<голова> голова> <тело> <дел> <ул>
Применив CSS к этой разметке, мы можем создать простую раскрывающуюся навигацию. Вот наша таблица стилей:
div.nav ul { заполнение: 0; маржа: 0; тип стиля списка: нет; } div.nav уль ли { цвет: #FFF; отступ: 15 пикселей; размер шрифта: 20px; граница справа: 2px #FFF сплошная; нижняя граница: 1px #FFF сплошная; плыть налево; цвет фона:#335A7F; ширина: 110 пикселей; } div.nav ul li a { цвет: #FFF; текстовое оформление: нет; } div.nav li:hover { цвет фона: #4C88BF; } div.nav ул ли ул { дисплей:нет; } div.nav ul li: hover ul { отображение: элемент списка; положение: абсолютное; поле сверху: 14px; поле слева: -15px; } div.nav ul li: hover ul li { поплавок: нет; } div.nav уль ли уль ли: hover { поплавок: нет; цвет фона: #66B5FF; } li.more: после { содержимое: "\00BB"; поплавок: справа; поле справа: 7px; }
Обратите внимание, как используется свойство display
. Во-первых, мы используем display:none
, чтобы скрыть вложенный