Горизонтальное выравнивание элементов

21 Май 2009
Опубликовано VladSavitsky
Задача: 

Нужно горизонтально центрировать (выровнять по горизонтали) элементы страницы.

Возможны несколько случаев. Рассмотрим их по очереди:

Горизонтальное центрирование блока фиксированной ширины

<div id="wrapper">
   <div id="main">
      Content
   </div>
</div>

#wrapper{
  width:100%;
}
#main {
  margin:0 auto;
  width:100px;
}

Другой вариант:
Обратите внимание: когда размер окна браузера меньше размеров центрируемого DIV, то элемент выходит за пределы экрана.

html, body{
  padding: 0;
  margin: 0;
  width:100%;
  height:100%;
}
#container{
  position: absolute;
  left: 50%;
  width: 400px;
  margin-left: -200px;
}

Горизонтальное центрирование блока произвольной ширины

<div id="wrapper">
   <div id="outer">
      <div id="main">
         Content
      </div>
   </div>
</div>

#wrapper{
  width:100%;
}
#outer{
  float:left;
  left:50%;
  position:relative;
}
#main {
  left:-50%;
  position:relative;
}

Горизонтальное центрирование строчного элемента

Можно сделать этот элемент блочным и использовать один из вариантов решений выше.

#main{
display:block;
}

Полезные ссылки:

]]>]]>

Комментарии

а зачем так заморачиватся чем плох первый вариант ?

Dima | Май 30th, 2009 в 4:53 после полудня

В одном варианте ширина блока известна и фиксированная, а во втором не известна зарание и потому может изменяться.

VladSavitsky | Июн 4th, 2009 в 1:25 после полудня

Это то понятно но с релатив и абсолют есть проблема в IE когда уменьшаешь окно все прыгает

Dima | Июн 4th, 2009 в 10:51 после полудня

Может быть у вас есть решение? - поделитесь.

VladSavitsky | Июн 4th, 2009 в 11:35 после полудня

К сожалению нет уневерсального метода но я при верстке стараюсь избегать релатив и абсолют ну а для центрирования пользуюсь так если можно обойтись inline блоком то конечноже просто контейнеру этого блока даём text-align:center; если же нужен блоковый элемент то самому элементу даём margin:0px auto; но тут тоже есть подкавырка ширина блока должна буть задана :(

Dima | Июн 4th, 2009 в 11:50 после полудня

Да, margin:0px auto; хорошее решение, но мне пришлось искать какой-то вариант для случая именно с плавающей шириной элемента. При этом сам дизайн был фиксированной ширины. Короче говоря страница при расширении окна не меняет ширины, а вот ширина внутреннего элемента зарание не известна да и количество этих самых элементов может быть разным. Для такого случая метод с позицированием - самое оно.

Хотя может быть есть и более элегантные решения...

VladSavitsky | Июн 6th, 2009 в 7:31 после полудня
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>