| Раздел: Интернет, веб-технологии | Автор: Nuxx |
| E-mail: |
Www: http://cssgrakhov.net.ru |
| Просмотров: 1906 | Дата: 08.06.2007 |
Расположить по центру блочный элемент очень легко, указав margin:auto и ширину этого элемента (IE5+ требуют text-align:center для родительского элемента). Иногда необходимо отцентрировать блочный элемент, не имеющей точной ширины, обернув его в другой блочный элемент. Для этого нужно приложить немного усилий.
К счастью, есть очень простой способ достичь этого. Если вы уже видели пример вертикального центрирования элемента, когда этот элемент сначала перемещается вниз на 50%, а затем родительский элемент смещается вверх на 50% — в результате чего мы получаем вертикально выровненный элемент, то этот способ будет вам знаком. К сожалению, данный метод вертикального центрирования работает только в браузерах IE, но если мы используем его для горизонтального выравнивания элемента, то этот метод поймут и остальные браузеры.
.xouter{
position:relative;
left:50%;
float:left;
clear:both;
margin:10px 0;
text-align:left;
}
.xinner{
border:1px solid #000;
padding:10px 20px;
position:relative;
left:-50%;
text-align:left;
}
Браузер IE5 на Mac отобразит результат применения данного способа неверно. Решением этой проблемы является использование display:inline-block для выравниваемого элемента. Причина использования плавающего блока без явного указания ширины в том, что он обертывает контент так, как нам этого хотелось.
Внешний элемент перемещается на 50% от левого края с использованием position:relative (указание этого необходимо для того, чтобы этот блок не выбивался из нормального потока документа). Внутренний элемент перемещается назад на 50% влево так же с использованием postion:relative — все это в совокупе позволяет нам выровнить блок, не имеющий точной ширины, точно посередине.
Использование этого метода порождает одну проблему: если выравниваемый блок имеет ширину большую половины размера окна, то в этом случае появляется полоса прокрутки (это относится как к вертикальному выравниванию, так и к горизонтальному — примеч. переводчика).
Ниже несколько примеров использования описанного метода.
This is some text of undefined width:
This is more text
This assumes text doesn't need to wrap
otherwise it will stretch full width
This is the usual method of centering and centres a block level element centred using margin-left:auto and margin-right:auto on an element of specified width (px, perentage or em are fine). Note that ie5.+ would text-align:center on a parent in order to center this block level element. This method does need a width.
This text is centred using text-align:center
This block of short lines
is centred
Using the left:50% and left:-50% technique
.outer{
position:relative;
left:50%;
float:left;
clear:left;
margin-bottom:10px;
}
.inner{
border:1px solid #000;
padding:10px 20px;
position:relative;
left:-50%;
text-align:left;
}
Данная статья является переводом. При желании вы всегда можете прочитать эту статью на английском языке.