Поддержка браузером маржи: авто

Как и многие дизайнеры, я использую margin: 0 auto; для центрирования элемента. При попытке проверить поддержку этой функции браузером на странице http://www.caniuse.com мне не удалось найти что-либо связанное.

Существует ли матрица совместимости браузеров для этой функции?


person ezpresso    schedule 09.04.2016    source источник
comment
Если вы не можете найти его на caniuse, вы можете предположить, что он поддерживается всем. Кроме разве что IE6, потому что винт IE6...   -  person Niet the Dark Absol    schedule 09.04.2016
comment
@NiettheDarkAbsol, я где-то читал о некоторых проблемах со старыми версиями Opera или Chrome для Android - не могу вспомнить.   -  person ezpresso    schedule 09.04.2016


Ответы (2)


Хотя вы, вероятно, не хотите настраивать свой код для работы в старых браузерах, которые не поддерживают margin: 0 auto;, но, поскольку вы спросили:

Поддержка началась только с IE6. Если вы хотите поддерживать более ранние браузеры, вы можете добавить text-align: center; к родительскому элементу. Это работает, потому что старые браузеры неправильно применяют text-align также к блочным элементам. При этом оставьте margin: 0 auto; для современных браузеров. Если вы хотите, чтобы text-align: center работало и в современном браузере, вы также можете установить display: inline-block; - тогда margin: 0 auto; вам не понадобится.

Итак, если это ваш HTML:

<div id="outer">
    <div id="inner"></div>
</div>

у вас есть следующие варианты:

Опция 1

#outer {
    background: pink;
    width: 100%;
    text-align: center; /* for very old browsers */
}

#inner {
    background: green;
    display: inline-block;
    width: 50px;
    height: 50px;
    margin: 0 auto; /* for >99% of browsers */
}

Вариант 2

#outer {
    background: pink;
    width: 100%;
    text-align: center;
    height: 50px; /* height of child - necessary for IE8 and IE9,
    otherwise the height is slightly larger than that of the child */
}

#inner {
    background: green;
    display: inline-block; /* necessary for modern browsers, IE8+ */
    width: 50px;
    height: 50px;
}

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

person Alexander Jank    schedule 08.03.2017
comment
Отличный ответ! Благодарю вас! - person ezpresso; 08.03.2017
comment
Еще один вопрос: что с кроссбраузерной поддержкой width: auto;? - person ezpresso; 08.03.2017
comment
Есть ли какая-то особая причина, по которой вы спрашиваете? Насколько мне известно, width: auto; поддерживается всеми браузерами, а также начальное значение. Чтобы вычислить автоматическую ширину для блочных элементов, вычтите горизонтальные поля/отступы/границы из ширины родительского элемента. Для встроенных элементов автоматическая ширина — это просто ширина содержимого. Как будто вы вообще не устанавливаете никакой ширины. - person Alexander Jank; 09.03.2017
comment
Да, есть причина. Я разрабатываю структуру HTML5 и сильно полагаюсь на правила margin: 0 auto и width: auto;. Я ориентируюсь на Android Browser 2.3+, поэтому мне следует избегать таких удобных вещей, как calc(). - person ezpresso; 09.03.2017
comment
Были ли у вас какие-либо проблемы с width: auto;? Насколько я знаю, он должен нормально работать во всех браузерах. - person Alexander Jank; 10.03.2017

Из https://developer.mozilla.org/en/docs/Web/CSS/margin , все браузеры полностью поддерживают margin: 0 auto;.

person Sumate Mephokkij Picky    schedule 10.04.2016
comment
Ответ неверный. Некоторые старые браузеры не поддерживают margin: 0 auto;, и это тоже указано в цитируемом источнике. Смотрите мой ответ для более подробной информации. - person Alexander Jank; 08.03.2017