如何水平居中未知宽度的无序列表?

Posted

技术标签:

【中文标题】如何水平居中未知宽度的无序列表?【英文标题】:How to horizontally center an unordered list of unknown width? 【发布时间】:2010-12-14 06:56:40 【问题描述】:

通常在页脚中有一组链接在列表中表示,例如:

<div id="footer">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</div>

我希望 div#footer 中的所有内容都水平居中。如果是一段,你会很容易地说:p text-align: center; 。或者如果我知道&lt;ul&gt; 的宽度,我可以说#footer ul width: 400px; margin: 0 auto;

但是如何在不为&lt;ul&gt; 设置固定宽度的情况下将无序列表项居中?

编辑:澄清 - 列表项应该彼此相邻,而不是在下面。

【问题讨论】:

【参考方案1】:

解决方案,如果您的列表项可以是display: inline,则非常简单:

#footer  text-align: center; 
#footer ul  list-style: none; 
#footer ul li  display: inline; 

但是,很多时候您必须在您的&lt;li&gt;s 上使用display:block。在这种情况下,以下 CSS 将起作用:

#footer  width: 100%; overflow: hidden; 
#footer ul  list-style: none; position: relative; float: left; display: block; left: 50%; 
#footer ul li  position: relative; float: left; display: block; right: 50%; 

【讨论】:

这很棒。从来没有想过使用 display:inline 来解决这个问题。 在您的&lt;li&gt;s 上使用display: inline-block 怎么样?你可以用 text-align 使它们居中,如果你需要它们,它们仍然会像一个块一样。【参考方案2】:

尝试将列表包装在一个 div 中,并为该 div 提供内联属性而不是您的列表。

【讨论】:

【参考方案3】:

这取决于您的意思是列表项是在上一个下方还是在上一个右侧,即:

Home
About
Contact

Home | About | Contact

您可以简单地使用第一个:

#wrapper  width:600px; background: yellow; margin: 0 auto; 
#footer ul  text-align: center; list-style-type: none; 

第二个可以这样完成:

#wrapper  width:600px; background: yellow; margin: 0 auto; 
#footer ul  text-align: center; list-style-type: none; 
#footer li  display: inline; 
#footer a  padding: 2px 12px; background: orange; text-decoration: none; 
#footer a:hover  background: green; color: yellow; 

【讨论】:

【参考方案4】:

使用下面的 css 来解决您的问题

#footer text-align:center; height:58px;
#footer ul   font-size:11px;
#footer ul li display:inline-block;

注意:不要在 li 中使用float:left。它会让你的 li 左对齐。

【讨论】:

【参考方案5】:

另一种解决方案:

#footer  display:table; margin:0 auto; 
#footer li  display:table-cell; padding: 0px 10px; 

那么在缩放文本的情况下ul不会跳转到下一行。

【讨论】:

我发现这个是最好的。好主意! 我已经回到这里再次使用它,它再次起作用了!谢谢 这正是我想要的。谢谢!【参考方案6】:

philfreo 的答案很棒,它完美运行(跨浏览器,使用 IE 7+)。只需将我的 exp 添加到 li 中的锚标记即可。

#footer ul li  display: inline; 
#footer ul li a  padding: 2px 4px;  /* no display: block here */

#footer ul li  position: relative; float: left; display: block; right: 50%; 
#footer ul li a display: block; left: 0;  

【讨论】:

这可能是对@philfreo 给出的答案的评论。

以上是关于如何水平居中未知宽度的无序列表?的主要内容,如果未能解决你的问题,请参考以下文章

css 适应“如何在无序列表或div中垂直和水平居中文本”

实现已知或者未知宽度的垂直水平居中

当宽度未知时,将图像水平居中并将其垂直放置在 div 内的底部

未知宽度水平居中的几种方法

CSS水平居中+垂直居中+水平/垂直居中的方法总结

如何使无序列表居中?