Это чистое решение CSS2 для горизонтального и вертикального центрирования без известных размеров ни контейнера, ни дочернего элемента.Хаки не участвуют.Я обнаружил это для этого ответа , и я также продемонстрировал его в этом ответе .
Решение основано на vertical-align: middle
в сочетании сline-height: 0
, родитель которого имеет фиксированную высоту строки.
HTML:
<span id="center">
<span id="wrap">
<img src="http://lorempixum.com/300/250/abstract" alt="" />
</span>
</span>
И CSS:
html,
body {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
overflow: hidden;
}
#center {
position: relative;
display: block;
top: 50%;
margin-top: -1000px;
height: 2000px;
text-align: center;
line-height: 2000px;
}
#wrap {
line-height: 0;
}
#wrap img {
vertical-align: middle;
}
Протестировано на Win7 в IE8,IE9, Opera 11.51, Safari 5.0.5, FF 6.0, Chrome 13.0.
Единственным предупреждением является IE7, для которого два самых внутренних элемента должны быть объявлены в одной строке, как продемонстрировано в этой скрипке :
<span id="center">
<span id="wrap"><img src="http://lorempixum.com/300/250/abstract" alt="" /></span>
</span>
Обратите внимание, что диапазоны также необходимы для IE7.В любом другом браузере span может быть div.