Ответ 1
Ну, я столкнулся с тем же вопросом прошлой ночью (для типа галереи), и сумел найти решение после спотыкания на на этой странице. Я рад сообщить, что это тоже работает для плавающих элементов!
Фокус в основном заключается в том, чтобы предоставить внешний элемент "display: table;" и внутренний элемент (содержащий img) "display: table-cell;".
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<style type="text/css">
.class_name {
display: table;
float: left;
overflow: hidden;
width: 153px;
height: 153px;
}
.class_name a {
display: table-cell;
vertical-align: middle;
text-align: center;
}
</style>
</head>
<body>
<div class="class_name">
<a href=""><img src="image.jpg" alt="" /></a>
</div>
</body>
</html>
Для IE8 вам нужно быть в стандартном режиме. Требуется некоторое дополнительное позиционирование, чтобы заставить его работать в IE7:
<!--[if lte IE 7]><style type="text/css">
.class_name {
position: relative;
}
.class_name a {
position: absolute;
top: 50%;
}
.class_name img {
position: relative;
top: -50%;
width: 100%;
}
</style><![endif]-->