#html #css #drop-down-menu
#HTML #css #выпадающее меню
Вопрос:
Я пытаюсь создать 100% выпадающее меню CSS и HTML, подобное тому, что видно на http://phpbb.com. При наведении курсора мыши на навигационные ссылки новый div появляется чуть ниже того, на который вы наводили курсор.
То, что я пытаюсь сделать, это сделать так, чтобы .submenu
оно отображалось чуть ниже того, в <li>
которое оно вложено, с помощью #nav li a:hover submenu {
. Насколько мне известно, этот селектор CSS должен выбирать .submenu
DIV при наведении курсора на a
элемент? Но это не работает.
#nav {
list-style-type: none;
margin: -5px 0px 0px 5px;
}
#nav li {
display: inline;
}
#nav li a {
display: block;
padding: 3px;
float: left;
margin: 0px 10px 0px 10px;
text-decoration: none;
color: #fff;
font-weight: bold;
position: relative;
}
#nav li a:hover {
text-shadow: 1px 1px #333;
}
#nav li a:hover submenu {
display: block;
color: red;
}
.submenu {
position: absolute;
display: none;
}
<ul id="nav">
<li><a href="/">Home</a>
</li>
<li>
<a href="/">Skins</a>
<div class="submenu">
hello :)
</div>
</li>
<li><a href="/">Guides</a>
</li>
<li><a href="/">About</a>
</li>
</ul>
Комментарии:
1. Ты имел в виду
#nav li a:hover .submenu
?2. вы можете попробовать эту демонстрацию: themeswild.com/read /…
Ответ №1:
Ваш предпоследний селектор ищет элемент «submenu», вы должны исправить это, чтобы сказать «.submenu»
Вот так:
/*#nav li a:hover submenu {*/
#nav li a:hover .submenu {
display: block;
color: red;
}
Редактировать:
Чтобы заставить наведение работать, вам также необходимо настроить свой CSS таким образом, чтобы наведение применялось к элементу списка, а не к тегу привязки:
#nav li:hover .submenu {
display: block;
color: red;
}
Комментарии:
1. Ах да, .submenu является дочерним элементом li, а не a.
2. Идеально, это работает, когда я добавляю указатель мыши к элементу списка. Спасибо! 🙂
3. @Josh — Не забудьте отметить в качестве ответа, помогло ли это, нажав на зеленую галочку 🙂
Ответ №2:
Вам не хватает точки (‘.’) перед подменю в селекторе #nav li a:hover submenu
?
Ответ №3:
Попробуйте отредактировать следующую часть. Поставьте . (точку) перед подменю, поскольку это класс.
#nav li a:hover .submenu {
display: block;
color: red;
}
Ответ №4:
#nav li:hover .submenu {
display: block;
color: red;
}
Вы хотите, чтобы подменю отображалось при наведении курсора мыши на li, а не на a, просто потому, что у вас нет элементов с подменю class внутри a.
Также вы могли бы рассмотреть возможность использования s для подменю.