列表项中间垂直对齐

Ste*_*eve 15 html css vertical-alignment

我有以下HTML和CSS创建列表,其中列表项具有最小高度设置.如果没有足够的内容来填充整个高度,我希望列表项的内容在中间而不是顶部垂直对齐.怎么回事呢?

<html>
    <head>
        <style type="text/css">
            ul {
                width : 300px;
                list-style-type: none;
            }

            li {
                min-height : 45px;
                vertical-align : middle;
                border-bottom : 1px black solid;
            }
        </style>
    <head>
    <body>
        <ul>    
            <li>Testing testing 1234</li>
            <li>Testing testing 1234 Testing testing 1234</li>
            <li>Testing testing 1234 Testing testing 1234 Testing testing 1234</li>
            <li>Testing testing 1234 Testing testing 1234 Testing testing 1234 Testing testing 1234</li>
            <li>Testing testing 1234 Testing testing 1234 Testing testing 1234 Testing testing 1234 Testing testing 1234</li>
       </ul>
 </body>
Run Code Online (Sandbox Code Playgroud)

这给了我以下内容:

在此输入图像描述

dra*_*yre 22

如果添加了<div><li>做出的CSS以下的变化,似乎工作:

li {
    min-height : 45px;
    border-bottom : 1px black solid;
}
li div {
    height:45px;
    display:table-cell;
    vertical-align : middle;
}
Run Code Online (Sandbox Code Playgroud)

在这里看到它 - 在IE8和FF4中工作:http://jsfiddle.net/RrVBh/

  • 如果你需要IE <8兼容性,那么不,不是真的.我发现自己诉诸于表格比我想承认的更多,因为IE6/7兼容性是用户的要求.只要咒语咒语,确保没有人在看,并进入黑暗的一面.制作十字标志是可选的. (2认同)

scu*_*ker 5

啊,垂直对齐很好。最简单的方法是设置line-height: 45px;,但这仅在您只有一行内容时才有效,并且会强制任何其他行溢出。

否则,您可以display:table-cell; vertical-align: middle;按照上面链接中的演示进行使用。

  • 这才是重点。您无法在表格布局/CSS3 之外真正垂直对齐文本。您唯一的其他选择是研究 CSS3 的新[灵活盒模型布局](http://www.html5rocks.com/tutorials/flexbox/quick/)。 (3认同)