Мёртвый блог, живого человека

SEO-оптимизация, софт, веб-разработка, интернет-технологии, советы

Выравнивание блоков div по центру (css, div html)

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

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;
}

Как я упоминал в начале статьи, способов выровнять блок по центру огромное множество. Каждый выбирает тот, который ему больше по душе. Жду комментариев и новых способов :)

13.09.2009
Понравилась статья ?

1. Подпишись на обновления блога — через rss или e-mail

2. Прочитай ещё записи из рубрики Вёрстка

3. Читай\добавляй комментарии:

sman:
Ноя 19, 2009 в 17:37

Самый простой и надежный, на мой взгляд смешанный:

#wrap {

width: 1000px;

position: absolute;

left: 50%;

margin-left: -500px;

}

Александр:
Дек 21, 2009 в 02:27

Спасибо автору за рецепты. Уже таблицами хотел делать(

Светлана:
Мар 8, 2010 в 01:31

использую метод, который описан в комменте от sman

а из приведеныых автором больше всего понравился процентный. он все же логичнее, чем через margin, имхо

Артем:
Мар 13, 2010 в 07:06

Спасибо чувак, оч помогло

Kas:
Июн 21, 2010 в 13:33

margin: auto; — не работает во многих браузерах и еще зависит о док тайпа.

Проверенный способ — http://go.deadblog.ru/e

Zverokoder:
Июл 12, 2010 в 14:25

Все отлично, когда ширина центрируемого блока фиксирована, будь то в процентах или в пиксах. А вот отцентрируйте мне блок с шириной ауто )) С помощью марджин. Увы-увы марджин не справляеться. Предлогайте варианты гуру. Я пользу два вложеных блок с позиционированием 50% и — 50%. Эффект «слайдинг дорс»

Сергей:
Янв 29, 2011 в 16:02

Спасибо за совет, 1-ый точно самый удобный и простой

Элвис:
Апр 2, 2011 в 17:14

left:50%;

margin-left:-25%;

Элвис:
Апр 2, 2011 в 17:22

left: 50%;

margin-left: половина ширины дива;

position: absolute;

Максим:
Апр 16, 2011 в 00:43

Спасибо за советы. Помучался с настройкой div с помощью margin... И поставил нормальный table — результат: работает и отображается во всех браузерах НОРМАЛЬНО и ОДИНАКОВО!!! Так что не заморачивайтесь с div.

Lom:
Май 1, 2011 в 16:17

Ребят, всё конечно хорошо, но у меня вопрос такой:

Вот я имею несколько div блоков с float:left; , они все находятся на одной высоте. Как мне сделать так, чтоб при растягивании экрана, расстояния между ними тоже пропорционально растягивались?

dj Tiesto:
Июл 1, 2011 в 11:45

Мне не подошел ни один вариант!!! А ещё есть:?

ref:
Июл 2, 2011 в 12:37

dj Tiesto, да такого быть не может (:

Виктор Смищук:
Июл 14, 2011 в 17:12

Я тоже

использую метод, который описан в комменте от sman

а из приведеныых автором больше всего понравился процентный. он все же логичнее, чем через margin, имхо

Я тоже использую его метод. Не знаю правда как, но он работает )

А авт орские методы не подошли ((

tarantino:
Июл 19, 2011 в 13:29

left:50%; margin-left:-425px; где -425px это половина ширины выравнимаего по горизонтали блока

Виктор:
Авг 8, 2011 в 15:56

Ни один метод не решает проблему с float внутри блока, если ширина блока заведомо не известна (например, меню).

В таких случаях использую дополнительный блок, который обворачивает выравниваемый блок. Стиль примерно так:

#dop-block{

position: relative;

float: right;

right: 50%;

}

#block{

position: relative;

float: left;

left: 50%;

}

Alex:
Авг 21, 2011 в 17:54

.content

{

min-width: 600px;

max-width: 1280px;

}

content — содержит всю страницу.

как выровнять его по центру

Alex:
Авг 21, 2011 в 18:00

то есть если в окне меньше 1280пх

то страница на всю ширину, а усли больше, то

страница по центру 1280пх

AlexB:
Авг 24, 2011 в 18:34

Спасибо, автор очень выручил!

помог 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

...

Денис:
Авг 28, 2011 в 08:58

Есть до боли простой способ... правда имеет один минус... но я им раньше все время пользовался.

Это двойной тег div... из минусов что нужно ставить 2 тега див, из плюсов то что работает везде и подходит всем и всегда.

Содержимое блока

fish9370:
Сен 7, 2011 в 14:31

.center {

position: relative;

left: 50%;

margin-left: -50%;

}

xlazex:
Окт 9, 2011 в 10:33

Огромное спасибо за статью. Еще большее спасибо sman!! Самый крутой способ, который только встречал! теперь только его и использую!

Женя:
Окт 18, 2011 в 10:50

.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%

}

Что я только не делал, а отступ снизу никак не появляется, просто сам тест большой. див приклеен к низу страницы. Можно было конечно решить эту проблему, создав еще один див, но можно ли как-то по-другому. Подскажите пожалуйста!

I.CaR®:
Ноя 4, 2011 в 09:05

Мне не подошел ни один вариант!!! А ещё есть:?

— У нас есть все размеры обуви, все цвета, все стили!

Так почему Вам не подходит наша обувь?

— У меня нет ног...

Антон:
Ноя 12, 2011 в 18:48

Спасибо, чувак. Способ 2 спас!

Паша:
Янв 15, 2012 в 01:06

Спасибо большое, помогло!

Tomich:
Фев 29, 2012 в 23:27

НЕ знаю, у меня никак не получается, или же через раз получается...

ghost:
Мар 11, 2012 в 11:08

Для выравнивания по-горизонтали этих способов должно хватить. Однако если у нас див-потомок имеет значение table-cell и стоит выравнивание по-вертикали, то не подходит ни один из перечисленных способов...

chupakabra:
Май 4, 2012 в 11:10

у меня вопрос а если допустим страница прокручена вниз, и а див всплывающий все равно всегда должен быть по центру ? как быть?

Roman:
Май 7, 2012 в 19:11

*{

margin:0px;

padding:0px;

}

CENTER{

margin:0;

padding:0;

}

.conteiner{

width:900px;

height:20px;

margin:0;

padding:0;

position:relative;

background:red;

}

Оставить комментарий или два

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: