我可以将 <ul> 与左对齐的 <li> 居中吗?

新手上路,请多包涵

我想将左对齐项目列表居中。

这就是我目前拥有的:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Shrinkwrapped List</title>
    <style type="text/css">
      #wrapper {
        margin: auto;
        width: 500px;
        border: solid 1px #CCCCCC;
      }
      #header {
        text-align: center;
       font-size: 200%;
      }
      #content {
        text-align: center;
      }
      #content ul {
        text-align: left;
        font-size: 150%;
        list-style-type: none;
        margin: 20px auto;
        padding: 0px;
        border: solid 1px #666666;
      }
    </style>
  </head>
  <body>
    <div id="wrapper">
      <div id="header">
        Shrinkwrapped List
      </div>
      <div id="content">
        <ul>
          <li>Lorem ipsum</li>
          <li>Dolor sit amet</li>
          <li>Consectetur</li>
          <li>Adipiscing elit</li>
          <li>Morbi odio</li>
          <li>Mi blandit vehicula</li>
        </ul>
      </div>
    </div>
  </body>
</html>

这会生成一个如下所示的页面:

不是我真正想要的

我真正想要的是这样的:

这就是我想要的样子

我可以通过将 width: 200px; 添加到 #content ul --- 来实现这一点,但问题是我有很多这样的列表,它们都有不同的宽度。

我希望 <ul> 缩小到内容,以便它可以正确居中。还是我以错误的方式解决这个问题?

感谢您的任何帮助,您可以提供。


解决方案

感谢 KennyTMMagnar ,这里是解决方案:

将这四行添加到 #content ul 的 CSS 规则:

 display:-moz-inline-stack;
display:inline-block;
zoom:1;
*display:inline;

我已经在 IE6、IE7、IE8 和 Firefox 3.6 中对此进行了测试。结果看起来像上面的第二张图片,列表总是适合项目的内容。

原文由 Travis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 418
2 个回答

<ul> 设置为使用 display: inline-block; 。请参阅 http://jsbin.com/atizi4

请注意,IE ≤ 7 不支持(完全) inline-block

原文由 kennytm 发布,翻译遵循 CC BY-SA 2.5 许可协议

你大概可以采纳 我之前的回答。 IE 的内联块,现代浏览器的 display:table。可能需要明确指定列表样式类型。

编辑:由于这是一个列表,也许可以在 inline-block 上使用 ul 而不是显示:表。 您需要在单独的规则中声明 display:inline;inline-block —之后用于IE。

原文由 meder omuraliev 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题