A"理论" css问题。
我想对这种情况下所谓的发生的事情进行某种澄清......
这是我的HTML的总结版本......
<div id="some_navbar">
<ul>
<li id="plain_li"><a href="#">HELLO</a></li>
<li id="dropdown_li"><a href="#">GOODBYE</a>
<ul>
<li><a href="#">FOR NOW</a></li>
<li><a href="#">FOR GOOD</a></li>
</ul>
</li>
</ul>
</div>
这是我的样式表
#some_navbar {
position: absolute; /* A positioned ancestor does exist. */
top: 0.75em;
right: 1.5em;
}
#some_navbar li,
#some_navbar a {
display: block;
}
#some_navbar ul {
list-style-type: none;
}
#some_navbar > ul {
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
}
#some_navbar > ul > li {
float: right;
margin: 0;
padding: 0.75em 1.5em;
border: 1px solid grey;
}
#dropdown_li > ul {
display: none;
}
#dropdown_li:hover > ul {
display: block;
position: absolute;
top: 1em;
}
我read 绝对意味着&#34;元素相对于其第一个定位(非静态)祖先元素定位&#34;。
这是否意味着我的最后一个选择器元素(#dropdown_li:hover > ul
)相对于其浮动父li
定位(换句话说,浮动符合此定义的定位)或者它也绝对定位曾祖父母(#some_navbar
)?
答案 0 :(得分:1)
我在此JSFIDDLE
中为您解构了代码它会告诉你有问题的元素不是&#34;亲属&#34;它的浮动父母。为此,您必须将父元素设置为position: relative
。
#some_navbar {
position: absolute; /* A positioned ancestor does exist. */
border: 1px solid red;
left: 5em;
width: 300px;
height: 300px;
}
#some_navbar li,
#some_navbar a {
display: block;
}
#some_navbar ul {
list-style-type: none;
}
#some_navbar > ul {
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
}
#some_navbar > ul > li {
float: right;
margin: 0;
border: 1px solid grey;
}
#dropdown_li > ul {
display: none;
}
#dropdown_li:hover > ul {
display: block;
position: absolute;
border: 1px solid green;
left: 0;
bottom: 0;
}
答案 1 :(得分:0)
浮动不算作定位。 “定位”表示static
属性的position
以外的值。因此,#dropdown_li:hover > ul
相对于#some_navbar
定位,因为它是position
不是static