我不能对齐菜单,包含一个内ul
,其容器的水平中心。 怎么做?
看到上的jsfiddle菜单的现场演示 。
<li><a href="aboutus.php">AboutUs</a>
<ul class="sub">
<li><a href="aboutsquare.php">About Square Innovations</a></li>
<li><a href="ourvision.php">Our Vision</a></li>
<li><a href="ourmission.php">Our Mission</a></li>
<li><a href="trainerprofiles.php">Trainer Profiles</a></li>
<li><a href="funclass.php">Fun In Our ClassRooms</a></li>
</ul>
</li>
可以解决ul
元素作为页面流内的行内元素,同时保持其块级特征(使用inline-block
显示值) -应用此之后,它可以简单地其容器内对准像任何inline-级元素,使用text-align
。
要实现这一点,添加以下规则:
#container {
text-align: center;
}
ul {
display: inline-block;
}
以下是更新的演示 。
参考
声明:为支持inline-block
是比较有限,见上caniuse.com兼容性表 。
有一个很尼思,完全跨浏览器和动态的“绝招”来实现这一点,只要在菜单停留在一行。 这是很好的说明如下: http://matthewjamestaylor.com/blog/beautiful-css-centered-menus-no-hacks-full-cross-browser-support
该inline-block的经常建议对于这个问题也没有很好的支持旧版浏览器在我的经验。 说实话,我从来没有使用它。 我总是去马修詹姆斯·泰勒介绍了巧妙的方法。
编辑:按照要求,我将简要介绍一下技术。 你的HTML应该像一个链接普通列表,与它周围的一个额外的包装股利。 事情是这样的:
<div class="menu-wrapper">
<ul>
<li><a ...>link</a></li>
<li><a ...>link</a></li>
<li><a ...>link</a></li>
</ul>
</div>
现在剩下的就是CSS的工作。 步骤如下:
- 浮法包装到左侧,并给它100%的宽度,使其占据整个视宽
- 浮法两个
ul
和li
左,不给他们任何的宽度,使它们适应他们的内容。 - 给
ul
一个position: relative
的left: 50%
这将使它的左边缘移动到中心的它的父,这意味着视口的中心。 - 最后,你应该给你
li
一个position: relative
的left: -50%
这会让他们搬过去父的左边缘ul
,使清单的中心li
的排队与父的左边缘ul
。 由于我们所做的优势我们在上一步中视口的中心,菜单现在有效居中。
正如我之前所说, 所有学分马修·詹姆斯·泰勒 ,以及definitly检查了他的彻底的解释 。 图中他取得使它更容易理解。
编辑
按照要求我建立了一个小提琴证明了该技术: http://jsfiddle.net/fDmCQ/
上缘改变<ul>
至0 auto
,并给它的宽度(〜575px或更大)。
例如的jsfiddle
ul {
font-family: Arial, Verdana;
font-size: 14px;
margin: 0 auto;
padding: 0;
width:600px;
list-style: none;
text-align: center;
}