Центрирование блока средствами CSS
В процессе верстки веб-страниц достаточно часто встречается задача центрирования блоков. Это может быть как вертикальное, так и горизонтальное центрирование.
Например, если сайт имеет фиксированную ширину, то рационально будет выровнять его по центру окна браузера, т.к. это упрощает чтение текста(особенно если монитор большой). Некоторые дизайны вообще предполагают расположение блока в центре окна браузера, т.е одновременно вертикальное и горизонтальное центрирование.
Для начала поговорим о горизонтальном центрировании. Наиболее популярный прием, это когда блок центрируется установкой размеров правого и левого margin в "auto" . Допустим, мы хотим отцентрировать блок с id ="container" шириной 860px. В таком случае в CSS файле нужно написать:
background-color:#EEE;
width:860px;
margin:0px auto;
}
Однако I.E. старых версий( 5.0 например) не выровняет этот блок по центру. Конечно, такие древние браузеры уже никто не использует(из 1800 моих дневных посетителей - только 1), однако на всякий случай, лучше сделать, чтобы и там работало:)
Для этого, родительскому элементу, т.е тому, внутри которого мы центрируем наш блок(обычно родительским элементом является тег BODY), нужно задать параметр text-align:center. В таком случае блок выровняется по центру, однако и все его содержимое, также выровняется по центру, а нам этого не нужно. Поэтому, внутри этого блока ставим выравнивание по умолчанию - text-align:left .
#container {
background-color:#EEE;
width:860px;
margin:0px auto;
text-align:left;
}
Существует также другой способ горизонтального выравнивания блока, основанный на позиционировании. Как Вы наверное знаете, по умолчанию, любой блочный элемент прижимается к левому краю родительского элемента. Поэтому, чтобы выровнять его по центру нужно:
1. Задать блоку абсолютное позиционирование
2. Сместить его вправо на 50% ширины окна браузера
3. Используя отрицательный отступ, сместить его влево на расстояние, равное половине ширины блока.
Таким образом, блок окажется по центру. Для большей наглядности, посмотрите ролик ниже:
CSS код примера:
background-color:#559964;
position:absolute;
left:50%;
margin-left:-430px;
width:860px;
}
Следует отметить, что если Вы хотите спозиционировать блок не относительно окна браузера, а, например, относительно другого блока, то для этого другого блока нужно задать position:relative;
Предположим, наш блок #container, который нужно выровнять по центру, лежит внутри блока #wrap. Тогда код будет выглядеть следующим образом:
#container {
background-color:#559964;
position:absolute;
left:50%;
margin-left:-430px;
width:860px;
}
Теперь давайте рассмотрим случай, когда нужно выровнять блок по центру страницы, т.е. применить одновременно горизонтальное и вертикальное центрирование. Здесь опять же применим позиционирование. Итак нам нужно:
1. Задать блоку абсолютное позиционирование
2. Сместить его вправо на 50% и вниз на 50% , тем самым поставив его верхний левый угол в центр окна браузера.
3. Используя отрицательный отступ, сместить его вверх на расстояние, равное половине высоты блока, и влево на расстояние, равное половине ширины блока.
Таким образом, блок окажется в центре веб-страницы.
Допустим высота нашего блока 600px , ну а ширина 860 px . Тогда CSS код будет выглядеть следующим образом:
background-color:#559964;
position:absolute;
top:50%;
left:50%;
margin-top:-300px;
margin-left:-430px;
height:600px;
width:860px;
}
Надеюсь сам принцип Вам понятен.