Я знаю, что настройка margin: 0 auto;
элемента используется для его центрирования (слева направо). Тем не менее, я знаю, что элемент и его родительский элемент должны соответствовать определенным критериям для работы автоматического запаса, и я никогда не смогу понять магию правильно.
Поэтому мой вопрос прост: какие свойства CSS должны быть установлены для элемента и его родителя, margin: 0 auto;
чтобы левее-правее центрировать дочерний элемент ?
margin: 0 auto;
корректно работать только в стандартном режиме, поэтому вам нужен тип документа (как если бы он не был нужен раньше).Ответы:
С верхней части моей головы:
display: block
илиdisplay: table
Вне головы других людей:
width
неauto
2Обратите внимание, что все эти условия должны выполняться для элемента, центрированного для его работы.
1 Есть одно исключение: если ваш фиксированный или абсолютно позиционированный элемент имеет
left: 0; right: 0
, он будет центрироваться с автоматическими полями .2 Технически,
margin: 0 auto
работает с автоматической шириной, но автоматическая ширина имеет приоритет над автоматическими полями, и в результате автоматические поля обнуляются, в результате чего создается впечатление, что они «не работают».источник
ol start
атрибуту (и это невозможно осуществить в Markdown) :(С макушки головы, это нужно
width
. Вам необходимо указать ширину контейнера, который вы центрируете (не родительскую ширину).источник
Полное правило для CSS:
display: block
Иwidth
не авто) ИЛИdisplay: table
float: none
position: relative
источник
Вне головы, если элемент не является блочным элементом - сделайте это так.
а затем дать ему ширину.
источник
Он также будет работать с display: table - полезное свойство display в этом случае, потому что не требует установки ширины. (Я знаю, что этому посту 5 лет, но он все еще актуален для прохожих;)
источник
От головы моей кошки, убедитесь, что
div
вы пытаетесь отцентрировать не установленwidth: 100%
.Если это так, то правила, установленные для дочерних элементов div, будут иметь значение.
источник
Пожалуйста, перейдите к этому быстрому примеру, я создал jsFiddle . Надеюсь, это легко понять. Вы можете использовать
wrapper
div с шириной сайта для выравнивания по центру. Причина, по которой вы должны указать,width
заключается в том, что браузер знает, что вы не собираетесь использовать жидкую компоновку.источник
Вот мое предложение:
источник
Возможно, интересно, что вам не нужно указывать ширину для
<button>
элемента, чтобы он работал - просто убедитесь, что он имеетdisplay:block
: http://jsfiddle.net/muhuyttr/источник
Для тех, кто только что задал этот вопрос и не может его исправить
margin: 0 auto
, вот что я обнаружил, вы можете найти полезным:table
элемент без заданной ширины должен иметьdisplay: table
и неdisplay: block
для того,margin: auto
чтобы выполнять работу. Это может быть очевидным для некоторых, так как комбинацияdisplay: block
иwidth
значение по умолчанию даст таблицу, которая будет расширена для заполнения ее контейнера, но если вы хотите, чтобы таблица приняла ее «естественную» ширину и была отцентрирована, вам нужноdisplay: table
источник
display: block
он не будет соответствовать условию 4 принятого ответа)margin: 0 auto
), и я также не мог указать ширину таблицы, поскольку ее содержимое может иметь разную ширину. В этом случае единственное решение, которое работает (то есть визуализирует таблицу обычным способом, но центрирует ее), это не правило ширины,display: table
иmargin: 0 auto