На самом деле, похоже, что кто-то понял, как это сделать без JavaScript. Это действительно один огромный хак, так что, вероятно, он имеет некоторые изломы, но вот пример кода, который был использован:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Universal vertical center with CSS</title>
<style>
.greenBorder {border: 1px solid green;} /* just borders to see it */
</style>
</head>
<body>
<div class="greenBorder" style="display: table; height: 400px; #position: relative; overflow: hidden;">
<div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
<div class="greenBorder" style=" #position: relative; #top: -50%">
any text<br>
any height<br>
any content, for example generated from DB<br>
everything is vertically centered
</div>
</div>
</div>
</body>
</html>
И здесь - результат. Статья содержит более правильный (не хакерский) способ сделать это, но он не работает в IE 7.
По сути, дело в том, чтобы использовать свойства display: table
и vertical-align: middle
в браузерах, соответствующих стандартам, и прибегать к взлому position
в IE. Свойства с символом #
перед ними могут быть прочитаны только в Internet Explorer.