Я использую этот подход (для IE8 +):
<h2> ie8+ </h2>
<ul id="menu" class="menu">
<a href="#"><li><span>5a</span></li></a>
<a href="#"><li><span>5b</span></li></a>
<a href="#"><li><span>5c</span></li></a>
<a href="#"><li><span>5d</span></li></a>
<a href="#"><li><span>5e</span></li></a>
</ul>
Css:
#menu li
{
margin: 15px;
width: 100px;
height: 100px;
text-align: center;
display: inline-block;
font-weight: bold;
color: white;
font-size: 50px;
border-radius: 2px;
position: relative;
background:red;
}
#menu li:after{
content:'';
display:inline-block;
height:100%;
width:1px;
overflow:hidden;
margin:0 0 0 -5px;
vertical-align:middle;
}
#menu li span{
vertical-align:middle;
display:inline-block;
white-space:normal;
}
подход (для IE6 +):
<h2> ie6+ </h2>
<ul id="menu2" class="menu">
<a href="#"><li><div class="holder"><div>5a</div></div></li></a>
<a href="#"><li><div class="holder"><div>5b</div></div></li></a>
<a href="#"><li><div class="holder"><div>5c</div></div></li></a>
<a href="#"><li><div class="holder"><div>5d</div></div></li></a>
<a href="#"><li><div class="holder"><div>5e</div></div></li></a>
</ul>
#menu2 li .holder{
display:table;
width: 100px;
height: 100px;
}
#menu2 li .holder > div{
width:100%;
display:table-cell;
vertical-align:middle;
}
Для т.е. exprations использования:
#menu2 li .holder > div { margin-top: expression(this.parentNode.offsetHeight > this.offsetHeight ? ((this.parentNode.offsetHeight-this.offsetHeight)/2 + "px") : "0"); }
Следуйте по ссылке
http://jsfiddle.net/X2e4A/1/
или простой способ, если текст не будет расти:
.menu li
{
margin: 15px;
width: 100px;
height: 100px;
text-align: center;
display: inline-block;
font-weight: bold;
color: white;
font-size: 50px;
border-radius: 2px;
position: relative;
background:red;
line-height:100px;
}
Ваш Недопустимый HTML. Единственным допустимым дочерним элементом UL является LI. – isherwood