我正在尝试使用HTML5和CSS3构建集中对齐下拉菜单。如果必须的话,我可以使用jQuery来协助。这必须在IE8 +中工作。目前,我的菜单是居中对齐的,下拉列表有效,但下拉项目的宽度(div
)与上面li
的宽度相同。
<div class="menu">
<ul class="level0">
<li class="level0">
<a href=" http://domain.com/">
<span>home</span>
</a>
<div class="sub">
<div class="sub-column">
<a href="http://domain.com/customer-service">
<span>Customer Service</span>
</a>
</div>
<div class="sub-column">
<a href="http://domain.com/privacy-policy">
<span>Privacy Policy</span>
</a>
</div>
</div>
</li>
<li class="level0">
<a href=" http://domain.com/about">
<span>About Us</span>
</a>
<div class="sub">
<div class="sub-column">
<div>
<p>Blah blah blah, some random text goes here.</p>
</div>
</div>
</div>
</li>
</ul>
</div>
CSS(试图压缩它以便于查看)。
.menu {
clear:both; display:block; max-width:100%; margin:0 auto; padding:0;
border:1px solid #ddd; border-bottom:7px solid #323131; text-align:center;
}
.menu ul {
display:block; max-width:100%; height:3.2em; margin:0 auto;
padding:0; list-style-type:none; text-align:center;
}
.menu ul li {display:inline-block; margin:0; padding:0; height:3.2em;
line-height:3.2em; position:relative;
}
.menu ul li > div {display:none; visibility:hidden; position:absolute;
background:#f60; z-index:999; transition:display 0.25s ease;
}
.menu ul li:hover > div {display:inline-block; visibility:visible;
max-width:100%;
}
.menu ul li a {display:block; margin:0; padding:0 2em; font-size:90%;
font-weight:700; text-transform:uppercase; transition:background-color 0.25s ease;
}
.menu ul li a:hover {background-color:#e4e4e4; color:#323131;}
.menu ul li.switcher {display:none;}
如何获取第一行div(.menu ul li > div
)的宽度以采用祖父元素(.menu
)的宽度?或至少使用max-width
拉伸以适应内容?
感谢任何帮助。感谢。
〜编辑〜
答案 0 :(得分:1)
答案 1 :(得分:1)
除了使用James建议制作.menu
position: relative
之外,我认为您还需要删除position: relative
上的.menu ul li
答案 2 :(得分:0)
感谢一些有用的建议,这就像我得到的那样接近工作:http://jsfiddle.net/Xp6yG/3/。
我将.menu ul li:hover > div
上的显示更改为display:table;
,并将whitespace:nowrap;
和right:50%;
添加到.menu ul li > div
元素。
下拉列表出现在我想要的位置并伸展以适合包含元素。非常感谢!