I have the following HTML and CSS that creates a list, where the list items have a min-height set. I would like for the contents of the list items to be vertically aligned in the middle instead of the top if there is not enough content to fill the entire height. How the heck do I pull this off?
<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>
Which gives me the following:
If you add a
<div>
inside the<li>
and make the following changes to the CSS, it seems to work:See it live here-- works in IE8 and FF4: http://jsfiddle.net/RrVBh/
Ahh, good ol' vertical align. The easiest way is to set
line-height: 45px;
but this only works when you have one line of content and will force any additional lines to overflow.Otherwise, you could use
display:table-cell; vertical-align: middle;
as demonstrated in the above link.