Почему margin 0 auto не всегда работает

Не работает выравнивание margin: 0 auto;

Со свойством min-width не работает margin: 0 auto, с max-width и width всё нормально :/
Вот код:

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Выравнивание элементов с помощью margin:auto
привет, друзья! объясните мне: почему не работает свойство выравнивает только по.

Не работает margin 0 auto
не смещает картинку в центр, подскажите что не так делаю? 4

Решение

Добавлено через 4 минуты

margin: 0px auto;
В чём различия между: margin: 0px auto; margin: auto; margin: 0 auto; Во многих верстках.

Margin 0 auto для iOS
Здравствуйте. Имеется сайт, состоит из #header, #contentMain и #footer. У #contentMain стоит.

Что такое margin:auto?
Прочитал margin:auto указывает, что размер отступов будет автоматически рассчитан браузером. Есть.

Margin:0 auto что значит?
Доброго времени суток! Не могу найти, что означает margin:0 auto. 0 это понятно, -нет полей, а 0.

Различная реакция на margin auto в разных браузерах
Все доброго времени суток. Возникла проблема, по сути на пустом месте. Имеется картинка.

Источник

CSS margin:auto — Как это работает?

Использование margin:auto , чтобы отцентрировать блочный элемент по горизонтали, это хорошо известный способ. Но задумывались ли вы, как это работает?

Результат действия значения auto зависит типа элемента и контекста. Для отступов сверху CSS auto может означать одно из двух: занять все свободное пространство или 0 пикселей. В зависимости от этого будет задаваться различная структура.

«auto» — занять все доступное пространство

Это наиболее распространенный способ использования auto для отступов. Если мы задаем auto для левого и правого отступов одного элемента, они равномерно займут все доступное в контейнере по горизонтали пространство. Таким образом элемент расположится по центру.

Это работает только для горизонтальных отступов. Но не будет работать для плавающих и строчных элементов. А также для абсолютно и фиксировано позиционированных элементов.

Имитация плавающего поведения через распределение доступного пространства

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

«auto» — задать 0 пикселей

Как упоминалось выше, auto не работает для плавающих, строчных и абсолютно позиционированных элементов. Для них уже определена структура, так что в использовании margin auto нет смысла.

Это будет только нарушать изначальную структуру. В том числе и для отступа текста сверху CSS . Следовательно, auto будет задавать значение 0 пикселей для отступов этих элементов.

Читайте также:  Чем починить надувную кровать

auto также не будет работать для стандартного блочного элемента, если для него не задана ширина. Во всех примерах, приведенных мной, для элементов была задана ширина.

Значение auto будет определять отступ в 0 пикселей, когда для блочного элемента задана ширина auto или 100% . Обычно он занимает всю ширину контейнера, следовательно, на ширину отступа останется 0 пикселей.

Что происходит с вертикальными отступами со значением auto?

auto и для отступа сверху CSS , и для нижнего отступа всегда вычисляется как 0 пикселей ( за исключением абсолютно позиционированных элементов ). В спецификации W3C указано следующее:

«Если для “margin-top” или “margin-bottom” задано «auto», для них используется значение, равное 0″.

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

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

Или из-за эффекта объединения отступов ( слияния отступов соседних элементов ). Это еще одно исключение из данного правила определения вертикальных отступов.

Центрирование абсолютно позиционированных элементов

Так как для абсолютно позиционированных элементов введено исключение, можно использовать значение auto , чтобы выровнять их по центру вертикально и горизонтально. Но сначала нужно выяснить, когда margin:auto будет работать именно так для отступа сверху CSS .

В другой спецификации W3C сказано:

«Если для всех трех позиций (“left”, “width” и “right”) задано значение «auto», сначала установите 0 для “margin-left” и “margin-right…»
» Если «auto» задано только для “margin-left” и “margin-right», тогда решите уравнение с дополнительным условием, чтобы для обоих отступов была задана одинаковая ширина».

Здесь довольно подробно описана ситуация, касающаяся значения auto для горизонтальных отступов. Чтобы эти отступы имели одинаковый размер, для left , width и right не должно задаваться значение auto ( их значение по умолчанию ). Чтобы отцентрировать элемент по горизонтали, нужно задать определенное значение для ширины абсолютно позиционируемого элемента, а left и right при этом должны иметь равные значения.

В спецификации также упоминается что-то подобное и для отступов сверху CSS div.

«Если для «top», «height» и «bottom» задано значение «auto» , установите для «top» позицию static…»

«Если для одной из трех позиций не установлено значение «auto»: если для «top» и «bottom» установлено значение «auto», решите уравнение с дополнительным условием, чтобы задать для этих отступов одинаковые значения».

Следовательно, чтобы отцентрировать по вертикали абсолютно позиционируемый элемент top , height и bottom не должны иметь значение auto .

Теперь, объединив все это, мы получим следующее:

Заключение

Если вам требуется сместить элемент на странице вправо или влево без контейнерных элементов ( например, как в случае с float ), помните, что есть возможность использовать для отступов значение auto .

Читайте также:  Как настроит samsung galaxy s3

Преобразование элемента в абсолютно позиционируемый только для того, чтобы отцентрировать его по вертикали ( отступы сверху CSS ), не лучшая идея. Существуют и другие варианты, такие как flexbox и CSS transform , которые больше подходят для этого.

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

Пожалуйста, оставляйте свои отзывы по текущей теме материала. За комментарии, дизлайки, лайки, подписки, отклики огромное вам спасибо!

Источник

`margin: auto;` не работает со встроенными блочными элементами

У меня есть «контейнер» div , которому я отдал margin:auto; .

Он работал нормально, пока я дал ему конкретный width , но теперь я изменил его на inline-block , и margin:auto; перестал работать

Старый код (работает)

Новый код (не работает)

4 ответа

Он больше не центрирован, потому что теперь он перемещается по странице так же, как элементы inline (очень похоже на элементы img ). Вам потребуется text-align: center содержащий элемент, чтобы центрировать inline-block div .

Что означает слово «авто»:

Использование auto для горизонтального поля укажет элементу заполнить доступное пространство (источник: http://www.hongkiat.com/blog/css-margin-auto/).

Почему display: inline-block не центрируется:

Во встроенной настройке нет доступного горизонтального пространства. До и после него находятся другие встроенные элементы (символы), которые занимают свое собственное пространство. Следовательно, элемент будет действовать так, как если бы горизонтальное поле было установлено равным нулю.

Почему «display: block» по центру:

При использовании в качестве элемента с установленным для него display: block доступное горизонтальное пространство будет равняться полной ширине родительского элемента за вычетом ширины самого элемента. Это имеет смысл, потому что display: block резервирует это горизонтальное пространство (тем самым делая его «доступным»). Обратите внимание, что элементы с display: block нельзя размещать рядом друг с другом. Единственное исключение возникает, когда вы используете float , но в этом случае вы также получаете (ожидаемое) поведение с нулевым запасом, поскольку это отключает горизонтальную «доступность».

Решение для элементов inline-block:

К элементам с display: inline-block следует подходить как к символам. Центрирование символов / текста может быть выполнено путем добавления text-align: center к их родительскому элементу (но вы, вероятно, уже знали это . ).

Для элементов со свойством display: inline-block ; Вычисленное значение «auto» для «margin-left» или «margin-right» становится используемым значением «0». [reference: CSS2§10.3.9]

Источник

Margin: auto и right:0, left:0, bottom:0, top: 0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

CSS Не работает margin-top/margin-left в IE, Firefox
Добрый день! Проблема в коде CSS .check > span< -webkit-transition: all ease-in-out.

Ошибка при создании трех колонок (float:left, float:right и margin:0 auto;)
3-й час бьюсь, но никак не могу понять, что не так делаю. почему оранжевый блок опускается? .

Не совсем вопрос понял. margin: auto не работает в блоке, которому задан position: absolute ? Например:

Потому что ему задан position: absolute Если его убрать то блок выровняется только по горизонтальной оси, по вертикальной это работать не будет.

Читайте также:  Ниссан вингроуд 2003 год не работает

Потому что не все так просто Я кстати сам не помню или даже и не знаю почему не работает в таких случаях margin-top: auto and margin-bottom: auto не смотря на то что родительский блок имеет фиксированные размеры по ширине

Они управляет положением и размером элемента, то есть при top: 0; left: 0; он сместится в правый верхний угол. Если задать top: 0; left: 0; bottom: 0; rigth: 0 то он займет весь родительский элемент. В вашем случае можно так сделать

Решение

TOP, BOTTOM, LEFT, RIGHT, CUSTOM в jTabbedPanel
Где в netBeans или программно сделать, так чтобы jTabbedPanel был во всю форму независимо от её.

Напомните, пожалуйста, название свойства, позволяющего показывать часть контейнера, указав «top right, bottom left»
например, картинку размерами 100 на 100 пикселей с помощью этого свойства можно показать.

В чём разница между left и margin-left?
Доброго дня! Помогите, разобраться, пожалуйста, в чём разница между left и margin-left. .

Не работает margin-bottom
По коду должно быть так: главный блок с отступами в 30 пунктов по оси y (вертикаль). Сверху отступ.

Не работает margin-bottom
Здравствуйте. вот такая вот конструкция часто не хочет работать. в чем загвоздка и как ее.

Источник

Почему я не могу центрировать с полями: 0 авто?

у меня есть #header div, который является 100% width и в этом div у меня есть неупорядоченный список. Я подал заявление margin: 0 auto в неупорядоченный список, но он не будет центрировать его в заголовке div.

может кто-нибудь сказать мне, почему? Я думал, что если я определяю ширину родительского div, то неупорядоченный список должен быть в состоянии центрироваться с margin: 0 auto . Чего мне не хватает?

5 ответов:

вам нужно определить ширину элемента, который вы центрируете, а не родительский элемент.

Edit: хорошо, я видел тестовую страницу сейчас, и вот как я думаю, что вы этого хотите:

встроенный блок покрывает всю линию (слева направо), поэтому поле слева и/или справа здесь не будет работать. Вам нужен блок, блок имеет границы слева и справа, поэтому на него могут влиять поля.

вот как это работает для меня:

Я не знаю, почему первый ответ является лучшим, я попробовал его и не работает на самом деле, как @kalys.Осмонов сказал, можно дать text-align:center to header , но вы должны сделать ul как inline-block , а не inline , и также вы должны заметить, что text-align может быть унаследовано, что не очень хорошо в какой-то степени, так что лучший способ (не работает ниже IE 9) использует margin и transform . Просто удалите float right и margin;0 auto С ul , как показано ниже:

этот путь может исправить проблема в том, что делает динамическую ширину ul центр, если вам все равно IE8 и т. д.

мы можем установить ширину для тега ul, тогда он выровняет центр.

Источник

Оцените статью