【发布时间】:2010-07-29 03:58:35
【问题描述】:
我想将左对齐项目列表居中。
这是我目前拥有的:
<!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> 缩小到内容,以便正确居中。还是我走错了路?
感谢您提供的任何帮助。
解决方案
将这四行添加到#content ul的CSS规则中:
display:-moz-inline-stack;
display:inline-block;
zoom:1;
*display:inline;
我已经在 IE6、IE7、IE8 和 Firefox 3.6 中对此进行了测试。结果看起来像上面的第二张图片,并且列表总是适合项目的内容。
【问题讨论】:
-
我知道这是一个不受欢迎的想法,但是用一张桌子不是更容易吗?
-
单独给它们宽度也会更容易。您可以为元素样式的 99% 做一个类,然后为单个宽度做另一个类。 search-this.com/2007/04/25/…
-
在此处查看最佳答案中的链接。这是让 inline-block 在旧浏览器中工作的方法,但它确实看起来很痛苦。 blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block 链接取自这里的最佳答案:stackoverflow.com/questions/2316535/…