Как горизонтально центрировать элемент?
У меня возникла проблема с горизонтальным центрированием <div>
внутри другого <div>
с помощью CSS. Я создаю две обертки: одну с идентификатором "outer" и другую с идентификатором "inner", где я хочу разместить текст "Foo foo".
Вот код, который я использую:
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Как мне правильно сделать так, чтобы <div id="inner">
был вертикально и горизонтально центрирован внутри <div id="outer">
? Я пробовал разные методы, но пока не добился желаемого результата. Какие стили CSS мне нужно применить?
5 ответ(ов)
Если вы не хотите задавать фиксированную ширину для внутреннего div
, вы можете сделать что-то подобное:
#outer {
width: 100%;
text-align: center;
}
#inner {
display: inline-block;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Таким образом, внутренний div
становится строчным элементом, который можно выравнивать по центру с помощью text-align
.
Если вы не хотите устанавливать фиксированную ширину и не нуждаетесь в дополнительном отступе, добавьте display: inline-block
к вашему элементу.
Вы можете использовать следующий код:
#inner {
display: table;
margin: 0 auto;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Таким образом, элемент #inner
будет корректно центрирован внутри родителя #outer
, и при этом не будет фиксированной ширины и лишних отступов.
Установите width
и задайте margin-left
и margin-right
на auto
. Это только для горизонтального выравнивания, однако. Если вы хотите сделать это в обе стороны, просто задайте свойства и в одном, и в другом направлении. Не бойтесь экспериментировать; вы ведь ничего не сломаете.
Чтобы элемент можно было центрировать, необходимо задать ему ширину. В противном случае он по умолчанию займет всё доступное горизонтальное пространство.
Способ, который я обычно использую, заключается в применении абсолютного позиционирования:
#inner {
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
position: absolute;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Внешнему div
не нужны дополнительные свойства, чтобы это работало.
Как вертикально центрировать элемент div для всех браузеров с помощью CSS?
Как задать cellpadding и cellspacing с помощью CSS?
Вертикальное выравнивание текста рядом с изображением?
Как добиться консистентного выравнивания чекбоксов и их меток в разных браузерах?
Как центрировать элемент с "position: absolute"