Я пытаюсь показать соответствующее подменю, когда пользователь наводит курсор на элемент в главном меню. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно иметь общего родителя для селектора hover, чтобы сделать свою магию, но тогда это, похоже, испортило мой стиль. Любые предложения о том, что forgo javascript/jquery будут оценены, поскольку я использую это как костыль слишком много для вещей, которые я, вероятно, должен решать с помощью CSS.
HTML
<div id="header">
<div id="header_headline">
Heading
</div>
<div id="menu">
<div id="menu_inset">
<a href="#" class="menu_item" id="menu_item_home">HOME</a>
<a href="#" class="menu_item" id="menu_item_profile">PROFILE<div class="sub_menu_arrow"></div></a>
<a href="#" class="menu_item" id="menu_item_projects">PROJECTS<div class="sub_menu_arrow"></div></a>
<a href="#" class="menu_item" id="menu_item_news">NEWS</a>
<a href="#" class="menu_item" id="menu_item_contacts">CONTACT</a>
</div>
</div>
<div id="sub_menu">
<div class="sub_menu_inset" id="sub_menu_profile">
<a href="#">1</a>
<a href="#">2</a>
<a href="#">3</a>
</div>
<div class="sub_menu_inset" id="sub_menu_projects">
<a href="#">1</a>
<a href="#">2</a>
<a href="#">3</a>
<a href="#">4</a>
</div>
</div>
</div>
CSS:
html, body {
width: 100%;
height: 100%;
border: 0;
padding: 0;
margin: 0;
font-family: 'Pathway Gothic One', sans-serif;
color: #212121;
}
a {
text-decoration: none;
color: #212121;
}
#header {
width: 100%;
}
#header_headline {
margin: 1em 1em 1em 1em;
font-size: 2em;
text-transform: uppercase;
}
#menu {
margin-top: 1em;
width: 100%;
text-align: center;
white-space: nowrap;
}
#menu_inset {
display: inline-block;
word-spacing: 5em;
}
.menu_item {
position: relative;
}
.menu_item:hover .sub_menu_arrow {
display: inline-block;
}
#menu_item_profile:hover ~ #sub_menu_profile {
display: inline-block;
}
#menu_item_people:hover ~ #sub_menu_people {
display: inline-block;
}
.sub_menu_arrow {
position: absolute;
display: none;
left: 0;
width: 100%;
bottom: -1.05em;
}
.sub_menu_arrow:after {
content: '';
margin: 0 auto;
border-width: 0 .5em .5em;
border-style: solid;
border-color: #CCCCCC transparent;
display: block;
width: 0;
}
#sub_menu {
margin-top: 1em;
background-color: #CCCCCC;
width: 100%;
text-align: center;
white-space: nowrap;
position: relative;
height: 2em;
}
.sub_menu_inset {
display: none;
top: 0.5em;
position: absolute;
left: 0;
width: 100%;
background-color: #CCCCCC;
word-spacing: 5em;
}
Вам необязательно использовать элементы <ul>
и <li>
. Хотя, следует избегать вложенности <a>
тегов в <a>
тегов. Я думаю, что это то, что вы могли бы попытаться выполнить (наведите указатель мыши на проект):
http://jsfiddle.net/u9v0mcvo/1/
Создавая только CSS-всплывающие подсказки, всплывающие подсказки и т.д., Он помогает вложить изначально скрытый элемент в элемент, который отвечает за его открытие.
Ваше меню должно быть <ul>
а подменю должно быть <ul>
внутри <li>
s. Затем под-ul следует позиционировать абсолютно и отображать: none. верхний уровень <li>
должен иметь: зависание, которое изменяет внутренний <ul>
на блок блокировки.