Что autoделать в margin:0 auto;?
Кажется, я не понимаю, что autoделает. Я знаю, что иногда это приводит к центрированию объектов. Спасибо.
Что autoделать в margin:0 auto;?
Кажется, я не понимаю, что autoделает. Я знаю, что иногда это приводит к центрированию объектов. Спасибо.
Ответы:
Когда вы указали widthобъект, к которому применили margin: 0 auto, объект будет располагаться в центре своего родительского контейнера.
Указание autoв качестве второго параметра в основном указывает браузеру автоматически определять левое и правое поля, что он делает, устанавливая их одинаково. Это гарантирует, что левое и правое поля будут иметь одинаковый размер. Первый параметр 0 указывает, что верхнее и нижнее поля будут установлены на 0.
margin-top:0;
margin-bottom:0;
margin-left:auto;
margin-right:auto;
Поэтому, чтобы дать вам пример , если родительский элемент имеет размер 100 пикселей, а дочерний элемент - 50 пикселей, то autoсвойство определит, что имеется 50 пикселей свободного пространства, которое можно разделить между margin-leftи margin-right:
var freeSpace = 100 - 50;
var equalShare = freeSpace / 2;
Что даст:
margin-left:25;
margin-right:25;
Взгляните на этот jsFiddle . Вам не нужно указывать родительскую ширину, только ширину дочернего объекта.
%? Я имею в виду, есть ли в css какое-либо другое свойство, которое может дать такой же результат, как left и rightauto
margin:auto 0состоянии?
Из спецификации CSS Расчет ширины и полей для незамещенных элементов уровня блока в нормальном потоке :
Если оба параметра «margin-left» и «margin-right» имеют значение «auto», их используемые значения равны. Это центрирует элемент по горизонтали относительно краев содержащего блока.
margin:0 auto;
0для верхнего-нижнего и autoдля левого-правого. Это означает, что левое и правое поле будут автоматически заполняться в соответствии с шириной элемента и шириной контейнера.
Как правило, если вы хотите поместить какой-либо элемент в центральное положение, он margin:autoотлично работает. Но это работает только в блочных элементах.
margin-top:0;
margin-bottom:0;
margin-left:auto;
margin-right:auto;
0 - верх-низ, а автоматический - левый-правый. Браузер устанавливает маржу.
Это станет более ясным после некоторого объяснения того, как работают эти два значения.
Свойство поля является сокращением для:
margin-top
margin-right
margin-bottom
margin-left
Так почему же всего два значения?
Ну, вы можете выразить маржу четырьмя значениями следующим образом:
margin: 10px, 20px, 15px, 5px;
что будет означать 10 пикселей вверху, 20 пикселей справа, 15 пикселей внизу, 5 пикселей слева
Точно так же вы можете выразить двумя значениями, подобными этому:
margin: 20px 10px;
Это даст вам поле 20 пикселей сверху и снизу и 10 пикселей слева и справа.
И если вы установите:
margin: 20px auto;
Тогда это означает верхнее и нижнее поле в 20 пикселей, а также левое и правое поля авто. А авто означает, что левое / правое поле автоматически устанавливается в зависимости от контейнера. Если ваш элемент является элементом блочного типа, то есть он представляет собой коробку и занимает всю ширину представления, тогда автоматически устанавливается одинаковое левое и правое поле, и, следовательно, элемент центрируется.
bodyи мы всегда даемwidthиmargin:0 autoк#wrapper