Вертикальное выравнивание блока - CodeHelper

Вертикальное выравнивание блока

2

Задача состоит в том, что необходимо разместить блок (например, div) по центру экрана. Вопрос в том, как это сделать, особенно, если у блока не фиксированная высота.

Для фиксироваванной использую такой способ:

HTML

<div> <!-- Это родительский блок произвольных размеров -->     
     <div class="middled"> <!-- А это дочерний блок, который мы выравниваем -->
          Див, выравниваемый по центру родительского горизонтально и вертикально одновременно.
     </div>
</div>

CSS

.middled{
  width: 444px; 
  height: 222px; 
  position: relative; 
  left: 50%; 
  top: 50%; 
  margin-left: -222px; 
  margin-top: -111px;
}

Если есть лучше пишите в ответах

Новые ответы


2

Для вертикального выравнивания в блоках разработчики W3C создали замечательное свойство display: table-cell;, которое позволяет заставить какой-либо элемент отображаться как ячейка таблицы. При этом добавив vertical-align: middle; мы прекрасно справились бы с поставленной задачей, если бы не Internet Explorer, который ни в какую не хочет поддерживать свойство display: table-cell;. Ниже приведен образец кода, который поможет IE отображать содержимое блока по середине, также как в остальных браузерах:

HTML:

<div class="container">
  <p class="middled">Вертикально отцентрированный элемент</p>
</div>

CSS:

.container {
  display: table-cell;
  vertical-align: middle;
}
.middled {
  margin-top: expression((parentNode.offsetHeight - this.offsetHeight)<0 ? "0" : (parentNode.offsetHeight - this.offsetHeight)/2 + "px");
}

Для укрощения IE мы воспользовались expression‘ом. Expression выполняет следующие функции: он вычисляет высоту родительского и дочернего элементов, затем их разность делит пополам, а полученное в результате этого число мы используем в качестве значения верхнего отступа для дочернего элемента. Expression лучше убрать в отдельный css файл используя условные комментарии.

Источник

Ещё несколько интересных решений


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.