Способов существует масса, но далеко не все позволяют выровнять div валидно. Я приведу в пример самые удачные и простые способы.
Для начала вспомним о margin- свойстве для установки ширины полей сразу для всех сторон элемента.
Число значений | Описание записи |
---|---|
1 | Отступы будут установлены одновременно от каждого края элемента. |
2 | Первое значение устанавливает отступ от верхнего и нижнего края, второе — от левого и правого. |
3 | Первое значение задает отступ от верхнего края, второе — одновременно от левого и правого края, а третье — от нижнего края. |
4 | Поочередно устанавливается отступ от верхнего, правого, нижнего и левого края. |
Способ 1. С auto
margin:0 auto;
Очень эффективный метод, который к тому-же позволяет выровнять отступы сверху и снизу. Всё просто, как угол дома. Имеется блок с определённой шириной (в пикселях, либо процентах), которому с помощью свойства «auto» задаём одинаковый отступ справа и слева, в итоге получаем div-блок по центру.
margin:10px auto;
Для выравнивания сверху и снизу:
margin:10px auto 5px;
Способ 2. С %%
Имеем блок шириной 60%, чтобы выровнять его по центру, нам нужно боковые отступы сделать по 20% справа и слева соответственно. Смотрим код:
#bl2 { margin:0 20% 0 20%; width:60%; }
Не парясь особо, получаем блок по центру, выровненный школьной математикой (60 + 20 + 20)- угадали сколько будет?
Способ 3. С позиционированием (ишак 7 нас тут может подвести, ибо отрицательных значений не ест)
#bl3{ left: 50%; margin-left: -500px; position: absolute; width: 1000px; }
Способ 4. Использование дополнительного блока (подсмотрен где-то на просторах инета)
Ни один метод не решает проблему с float внутри блока, если ширина блока заведомо не известна (например, меню).
В таких случаях используют дополнительный блок, который обворачивает выравниваемый блок. Стиль примерно так:
#dop-block{ position: relative; float: right; right: 50%; } #block{ position: relative; float: left; left: 50%; }