Элементы списка по вертикали

У меня есть следующий 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>

Что дает мне следующее:

enter image description here

Ответы

Ответ 1

Если вы добавите <div> внутри <li> и внесите следующие изменения в CSS, это сработает:

li {
    min-height : 45px;
    border-bottom : 1px black solid;
}
li div {
    height:45px;
    display:table-cell;
    vertical-align : middle;
}

Смотрите здесь live - работает в IE8 и FF4: http://jsfiddle.net/RrVBh/

Ответ 2

Ahh, good ol < вертикальное выравнивание. Самый простой способ - установить line-height: 45px;, но это работает только в том случае, если у вас есть одна строка содержимого и заставит все дополнительные строки переполняться.

В противном случае вы можете использовать display:table-cell; vertical-align: middle;, как показано в приведенной выше ссылке.