#css #navigation
#css #навигация
Вопрос:
Скриптуйте здесь:http://jsfiddle.net/csaltyj/3A78u /
Я хочу, чтобы меню sub-sub nav совпадало с верхней частью его родительского элемента (следовательно, top: 0), но по какой-то причине оно совпадает с родительским элементом родительского элемента. Я не уверен, что происходит .. есть идеи?
HTML:
<div id="nav">
<ul>
<li><a>Item One</a></li>
<li><a>Item Two</a>
<ul>
<li><a>Item two has babies</a></li>
<li><a>Baby #2</a>
<ul>
<li><a>Sub-babies</a></li>
<li><a>This is fun</a></li>
<li><a>Last Item</a></li>
</ul>
</li>
<li><a>SubSub</a>
<ul>
<li><a>Another Item</a></li>
<li><a>Another!</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
CSS:
#nav {
height: 40px;
}
#nav ul {
list-style: none;
font-family: Arial, sans-serif;
font-size: 0.8em;
}
/* When mousing over any LI, reveal its UL if any */
#nav > ul li:hover > ul {
display: block;
}
/* For all links */
#nav a {
text-decoration: none;
color: #000;
}
/* Main nav styling */
#nav > ul > li > a {
padding: 1em;
}
#nav a:hover {
color: red;
}
#nav > ul > li {
float: left;
border: 1px solid #999;
}
/* Subnav styling */
#nav > ul ul {
display: none;
position: absolute;
font-size: 1em;
background: #eee;
padding: 0.5em;
border: 1px solid #999;
}
/* Subsubnav styling */
#nav > ul ul ul {
left: 50px;
top: 0;
width: 150px;
position: absolute;
}
#content {
}
Ответ №1:
Вам нужно добавить position: relative
элементы «уровня 2» li
:
#nav > ul ul li {
position: relative
}
Вот версия, в которой все дочерние элементы выстроены в ряд: http://jsfiddle.net/3A78u/2 /
Если бы вы хотели использовать >
, это было бы #nav > ul > li > ul > li
.
Комментарии:
1. Это работает, но создает странную проблему с прозрачностью: jsfiddle.net/csaltyj/3A78u/3
Ответ №2:
Свойство ‘top’ относится к первому нестатически расположенному родительскому элементу. В данном случае это элемент UL (который абсолютно позиционирован). Вам нужно добавить ‘position:relative;’ к элементам списка, чтобы элементы внутри были выровнены относительно него.