我一直听说当你使用绝对定位时,你想要作为其父元素的元素需要具有
我试图构建一个CSS下拉菜单,但当我将其父元素设置为
所以我查看了其他示例菜单,看看它们是如何做到的,我发现其中一个甚至没有使用任何带有
这个例子在这里:http://purecssmenu.com/ 所以我尝试删除我的
所以我想知道这是否合理-没有
如果需要,这是我的HTML:
relative
的position
。我试图构建一个CSS下拉菜单,但当我将其父元素设置为
relative
时,我很难让下拉菜单项超出主菜单项的宽度; 下拉菜单项中的文本会自动换行。所以我查看了其他示例菜单,看看它们是如何做到的,我发现其中一个甚至没有使用任何带有
relative
position
的父元素,尽管它们像我一样使用了绝对定位。这个例子在这里:http://purecssmenu.com/ 所以我尝试删除我的
relative
定位,问题就解决了。然而,现在我正在使用绝对定位,而没有使用relative
定位的任何父元素,它们都设置为static
。所以我想知道这是否合理-没有
relative
的父元素,它不会回退到浏览器窗口吗?如果需要,这是我的HTML:
<div class="navWrapper">
<div class="left"></div>
<div class="nav">
<ul>
<li class="home"><a href="/">Home</a></li>
<li class="spacer"></li>
<li class="about"><a href="about_us/">About Us</a></li>
<li class="spacer"></li>
<li class="trademark"><a href="freetrademarksearch/">Free Trademark Search</a></li>
<li class="spacer"></li>
<li class="services">
<a href="services/">Services</a>
<ul class="sub">
<li><a href="">Trademark Search</a></li>
<li><a href="">Prepare & File Trademark</a></li>
<li><a href="">Trademark Infringement</a></li>
</ul>
</li>
<li class="spacer"></li>
<li class="testimonials"><a href="testimonials/">Testimonials</a></li>
<li class="spacer"></li>
<li class="more"><a href="javascript:void(0);">More Information</a></li>
<li class="spacer"></li>
<li class="contact"><a href="contact-us/">Contact Us</a></li>
</ul>
<div class="contentClear"></div>
</div>
<!-- Nav Ends -->
<div class="right"></div>
</div>
<!-- Nav Wrapper Ends -->
CSS:
#header .navWrapper {
width: 1004px;
}
#header .navWrapper .left {
float: left;
width: 4px;
min-width: 4px;
height: 47px;
min-height: 47px;
background: url('../images/nav-left-bg.png') left top no-repeat;
}
#header .navWrapper .nav {
float: left;
width: 994px;
border-top: 1px solid #e0d0b4;
border-left: 1px solid #e0d0b4;
border-right: 1px solid #e0d0b4;
border-bottom: 1px solid #e8dcc8;
background: url('../images/nav-button-bg.png') left top repeat-x;
}
#header .navWrapper .nav ul {
margin: 0 1px;
display: block;
}
#header .navWrapper .nav li {
float: left;
display: block;
height: 45px;
font-family: OpenSansBold, Arial;
font-size: 16px;
line-height: 2.9;
text-align: center;
color: #646464;
}
#header .navWrapper .nav li.spacer {
width: 2px;
min-width: 2px;
height: 45px;
min-height: 45px;
background: url('../images/nav-button-spacer-bg.png') left top no-repeat;
}
#header .navWrapper .nav li a,
#header .navWrapper .nav li a:visited
{
display: block;
height: 45px;
padding: 0 20px;
color: #646464;
text-decoration: none;
}
#header .navWrapper .nav li a:hover,
#header .navWrapper .nav li a:active,
#header .navWrapper .nav li a:focus
{
color: #fff;
background: url('../images/nav-button-bg.png') left bottom repeat-x;
}
#header .navWrapper .nav li.home {
max-width: 86px;
text-indent: -1px;
}
#header .navWrapper .nav li ul.sub {
position: absolute;
}
#header .navWrapper .nav li ul.sub li {
float: none;
display: block;
font-family: OpenSansSemibold, Arial;
font-size: 14px;
line-height: 2.3;
height: auto;
text-align: center;
background-color: #f4771d;
color: #fff;
}
#header .navWrapper .nav li ul.sub li a,
#header .navWrapper .nav li ul.sub li a
{
color: #fff;
height: auto;
}
#header .navWrapper .nav li ul.sub li a:hover,
#header .navWrapper .nav li ul.sub li a:focus,
#header .navWrapper .nav li ul.sub li a:active
{
background: #d66627;
}
#header .navWrapper .right {
float: right;
width: 4px;
min-width: 4px;
height: 47px;
min-height: 47px;
background: url('../images/nav-right-bg.png') left top no-repeat;
}
<li>
,而不是<ul>
。 :) - Brettposition:absolute
,但你没有定义任何top
、left
、bottom
或right
属性。这些属性 不会 默认为 0。当未指定top
和bottom
时,元素的垂直位置与其在流中仍然存在时的位置相同。left
和right
也是如此,水平定位也是如此。尝试将其中任何一个属性设置为 0px,你就会明白我的意思。 - Faustposition:absolute
是必要的,因为它将子菜单从流中移除,使得容器 li 可以保持由菜单顶部的文本计算出的宽度,而该容器 li 没有指定宽度。而如果您在子列表上使用了position:relative
,则其宽度会强制包含 li 扩大,导致 "联系我们" 项目跳到下一行。 - Faust