Сначала я дам вам посмотреть код, а затем расскажу, в чем моя проблема:
Тинкербин: http://tinkerbin.com/x8iGCFsZ
<style>
div.container{
height: 200px;
width: 200px;
background-color:red;
margin-top: 10px;
}
div.subContainer{
position: relative;
text-align: center;
}
div.inner{
position: absolute;
background-color:yellow;
width: 150px;
}
</style>
<div class="container">
<div class="subContainer">
<div class="inner">bananas for breakfast</div>
</div>
</div>
Таким образом, согласно учебнику, text-align: center;
при применении к родительскому элементу центрирует его дочерние элементы, только если они имеют display: inline;
.
Следовательно, и, как и следовало ожидать, поскольку <div>
по умолчанию отображает блокировку (display:block;
), text-align: center;
, примененный к родителю div.subContainer
, ничего не делает со своим дочерним элементом div.inner
.
Пока все хорошо. Ничего странного.
Моя проблема возникает, когда я пытаюсь использовать <span>
вместо <div>
на элементе .inner
, и я позиционирую его абсолютно (position: absolute;
) & mdash; который, как вы знаете, принудительно изменяет отображение со встроенного по умолчанию на блокировку.
Взгляните:
<style>
div.container{
height: 200px;
width: 200px;
background-color:red;
margin-top: 10px;
}
div.subContainer{
position: relative;
text-align: center;
}
span.inner{
position: absolute;
background-color:yellow;
width: 150px;
}
</style>
<div class="container">
<div class="subContainer">
<span class="inner">bananas for breakfast</span>
</div>
</div>
То, что происходит, странно. Несмотря на принудительное отображение значения блока (благодаря position: absolute;
), диапазон по-прежнему центрирован. И даже более того, центрирование на самом деле странно. Он берет левую сторону блока и выравнивает его по центру содержащего элемента, вместо того, чтобы, как обычно, выравнивать оба центра.
Поведение исправлено & mdash; начинает действовать как блок & mdash; когда я вручную установил дисплей на span.inner
для блокировки.
span.inner{
position: absolute;
display: block;
background-color:yellow;
width: 150px;
}
Итак, что здесь происходит? Меняет ли абсолютное позиционирование силу, чтобы дисплей блокировался? Почему центрирование странное?