我需要将未知宽度的无序列表居中,同时仍保持列表项左对齐。
达到与此相同的结果:
HTML
<div>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
CSS
div { text-align: center; }
ul { display: inline-block; text-align: left; }
除了我的
<ul>
没有父级 div。 ul { margin: 0 auto; }
不起作用,因为我没有固定的宽度。 ul { text-align: center; }
不起作用,因为列表项将不再保持对齐。那么我怎样才能将这个 <ul>
居中,同时保持 <li>
左对齐(没有父 div 包装器)?
<ul>
<li></li>
<li></li>
<li></li>
</ul>
编辑:也许我的措辞不是最好的...第一段代码已经可以工作了...我需要的是在不使用<div>
包装器的情况下完成它,如果这当然是可能的话。漂浮技巧?伪元素技巧?一定有办法的。
ul {
display: table;
margin: 0 auto;
}
<html>
<body>
<ul>
<li>56456456</li>
<li>4564564564564649999999999999999999999999999996</li>
<li>45645</li>
</ul>
</body>
</html>
list-style-position:inside
:
ul {
text-align: center;
list-style-position: inside;
}
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
对于这个例子。 如果我理解正确,您希望列表项位于屏幕中间,但您希望这些列表项中的文本位于列表项本身左侧的中心。这样做实际上非常简单。你只需要一些CSS:
ul {
display: table;
margin: 0 auto;
text-align: left;
}
而且它有效!这就是正在发生的事情。首先,我们说我们只想影响无序列表。然后,我们使用 Rafael Herscovici 的技巧将列表项居中。最后,我们说将文本与列表项的左侧对齐。
试试这个:
<html>
<head>
<style type="text/css">
ul {
margin:0;
padding:0;
text-align: center;
list-style:none;
}
ul li {
padding: 2px 5px;
}
ul li:before {
content:url(http://www.un.org/en/oaj/unjs/efiling/added/images/bullet-list-icon-blue.jpg);;
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</body>
</html>
示例:
<!doctype html>
<html>
<style>
div.list {
text-align: center;
}
</style>
<body>
<div class="list">
<li>Hi</li>
<li>Hi</li>
<li>Hi</li>
</div>
</body>
</html>