Выравнивание блоков div по центру (css, div html)
В данной статье я расскажу, как поместить блок div по центру. Способов существует множество, но далеко не все позволяют сделать именно то, что требуется. Я приведу в пример самые лучшие и простые способы.

Вообще, есть дюжина способов как правильно выровнять div блок по центру, каждый вебмастер использует свой любимый\наиболее удобный способ. Но тем не менее, есть несколько основных, наиболее популярных и универсальных способа. И конечно-же, валидные по всем современным стандартам.
И да, стоит сразу сказать, что данные способы могут не работать в ie6, или чём-то подобном. Я даже не обращаю внимание на данный браузер, не смотря на то, сколько людей им пользуется. Пора бы уже отучивать пользоваться старьём.
Итак, что мы имеем?
Способ 1. Самый крутой
margin:0 auto;
Очень эффективный метод, который к тому-же позволяет выровнять отступы сверху и снизу. В чём фишка метода? Всё просто до безумия. Мы имеем блок с определённой шириной (в пикселях, либо процентах), которому с помощью свойства «auto» задаём одинаковый отступ справа и слева, в итоге получаем div-блок по центру. Первое значение (0 в примере) — это отступ сверху и снизу.
К примеру, для выравнивания сверху пишем:
margin:10px auto;
Для выравнивания сверху и снизу:
margin:10px auto 5px;
На мой взгляд — это самый лучший способ выровнять блоки по центру. К тому-же он полностью валидный.
Способ 2. Процентный
Если блок имеет ширину в процентах, то мы можем выровнять div по центру применяя равные отступы, чтобы добить полную ширину до 100%. Кто не понял, покажу на примере, так проще:
Имеем блок шириной 50%, чтобы выровнять его по центру, нам нужно боковые отступы сделать по 25% справа и слева соответственно. Смотрим код:
#test2 {
margin:0 25% 0 25%;
width:50%;
}
Не напрягаясь, получаем блок по центру, выровненный банальной математикой (50 + 25 + 25) :)
Способ 3. Смешанный
Данный способ посоветовал в комментариях sman.
#test3 {
left: 50%;
margin-left: -500px;
position: absolute;
width: 1000px;
}
Как я упоминал в начале статьи, способов выровнять блок по центру огромное множество. Каждый выбирает тот, который ему больше по душе. Жду комментариев и новых способов :)
Самый простой и надежный, на мой взгляд смешанный:
#wrap {
width: 1000px;
position: absolute;
left: 50%;
margin-left: -500px;
}
Спасибо автору за рецепты. Уже таблицами хотел делать(
использую метод, который описан в комменте от sman
а из приведеныых автором больше всего понравился процентный. он все же логичнее, чем через margin, имхо
Спасибо чувак, оч помогло
margin: auto; — не работает во многих браузерах и еще зависит о док тайпа.
Проверенный способ — http://go.deadblog.ru/e
Все отлично, когда ширина центрируемого блока фиксирована, будь то в процентах или в пиксах. А вот отцентрируйте мне блок с шириной ауто )) С помощью марджин. Увы-увы марджин не справляеться. Предлогайте варианты гуру. Я пользу два вложеных блок с позиционированием 50% и — 50%. Эффект «слайдинг дорс»
Спасибо за совет, 1-ый точно самый удобный и простой
left:50%;
margin-left:-25%;
left: 50%;
margin-left: половина ширины дива;
position: absolute;
Спасибо за советы. Помучался с настройкой div с помощью margin... И поставил нормальный table — результат: работает и отображается во всех браузерах НОРМАЛЬНО и ОДИНАКОВО!!! Так что не заморачивайтесь с div.
Ребят, всё конечно хорошо, но у меня вопрос такой:
Вот я имею несколько div блоков с float:left; , они все находятся на одной высоте. Как мне сделать так, чтоб при растягивании экрана, расстояния между ними тоже пропорционально растягивались?
Мне не подошел ни один вариант!!! А ещё есть:?
dj Tiesto, да такого быть не может (:
Я тоже
а из приведеныых автором больше всего понравился процентный. он все же логичнее, чем через margin, имхо
Я тоже использую его метод. Не знаю правда как, но он работает )
А авт орские методы не подошли ((
left:50%; margin-left:-425px;где -425px это половина ширины выравнимаего по горизонтали блокаНи один метод не решает проблему с float внутри блока, если ширина блока заведомо не известна (например, меню).
В таких случаях использую дополнительный блок, который обворачивает выравниваемый блок. Стиль примерно так:
#dop-block{
position: relative;
float: right;
right: 50%;
}
#block{
position: relative;
float: left;
left: 50%;
}
.content
{
min-width: 600px;
max-width: 1280px;
}
content — содержит всю страницу.
как выровнять его по центру
то есть если в окне меньше 1280пх
то страница на всю ширину, а усли больше, то
страница по центру 1280пх
Спасибо, автор очень выручил!
помог 3 Способ, предыдущие не то делали.
я хотел сделать Картинку как фон, чтобы всегда была по центру и fixed.(потому что на background у меня уже стоит image)
а слоем выше основу сайта и чтоб скроллился ( основа у меня в html-таблице )
Вышло так как нужно, и таблица в центре и рисунок в центре под таблицей, и любой блок который добавляю также можно ставить в центр в любой слой.
.IMAGE{
left: 50%;
margin-left: -500px;
position: fixed;
width: 1000px;
z-index:1;
}
.TABLE{left: 50%;
margin-left: -500px;
position: absolute;
width: 1000px;
border:0;
top:10px;
z-index:2;
}
html
...
Есть до боли простой способ... правда имеет один минус... но я им раньше все время пользовался.
Это двойной тег div... из минусов что нужно ставить 2 тега див, из плюсов то что работает везде и подходит всем и всегда.
Содержимое блока
.center {
position: relative;
left: 50%;
margin-left: -50%;
}
Огромное спасибо за статью. Еще большее спасибо sman!! Самый крутой способ, который только встречал! теперь только его и использую!
.absElement {
position: absolute;
background: Chartreuse;
filter: progid:DXImageTransform.Microsoft.Alpha (opacity=80);
/* для IE */
opacity:0.8;
/* для Opera and mozilla */
color: DarkViolet;
height: auto;
left: 6%;
right: 6%;
top: 6%;
border-style: solid solid solid solid;
border-width: 4px 4px 4px 4px;
border-color: ForestGreen;
padding: 3%
}
Что я только не делал, а отступ снизу никак не появляется, просто сам тест большой. див приклеен к низу страницы. Можно было конечно решить эту проблему, создав еще один див, но можно ли как-то по-другому. Подскажите пожалуйста!
— У нас есть все размеры обуви, все цвета, все стили!
Так почему Вам не подходит наша обувь?
— У меня нет ног...
Спасибо, чувак. Способ 2 спас!
Спасибо большое, помогло!
НЕ знаю, у меня никак не получается, или же через раз получается...
Для выравнивания по-горизонтали этих способов должно хватить. Однако если у нас див-потомок имеет значение table-cell и стоит выравнивание по-вертикали, то не подходит ни один из перечисленных способов...
у меня вопрос а если допустим страница прокручена вниз, и а див всплывающий все равно всегда должен быть по центру ? как быть?
*{
margin:0px;
padding:0px;
}
CENTER{
margin:0;
padding:0;
}
.conteiner{
width:900px;
height:20px;
margin:0;
padding:0;
position:relative;
background:red;
}