Почему “дисплей:таблица-ячейка ”разрывается, когда“позиция:абсолютный”
Вопрос
Я столкнулся со странной проблемой.Я использую DIV в качестве контейнера и помещаю изображение в этот DIV.Я хочу, чтобы это изображение было выровнено по вертикали снизу.Работает следующий код.
#banner {
width: 700px;
height: 90px;
top: 60px;
left: 178px;
overflow: hidden;
text-align: center;
display: table-cell;
vertical-align: bottom;
position: relative;
}
<div id="banner">
<img src="http://www.google.de/intl/de_de/images/logo.gif"/>
</div>
Но если я изменю css-код "position:относительноеположение" к":абсолют", изображение больше не может быть выровнено по низу.Это ошибка Firefox3?Как я могу решить эту проблему?
Мое текущее решение таково:
<div id="banner">
<table width="100%" height="100%"><tr><td valign="bottom" align="center">
<img src="http://www.google.de/intl/de_de/images/logo.gif"/>
</td></tr></table>
</div>
Но мне не нравится это решение.
Решение
Краткий ответ:Изменение
top: 60px;
Для
bottom: 60px;
Длинный ответ:
Декларация position: absolute
извлекает ваш элемент, где бы он ни находился, и помещает его относительно самого внутреннего элемента, который не объявлен статическим.In больше не участвует в выравнивании любого другого элемента, следовательно, он больше не служит ячейкой таблицы (объявление не имеет никакого эффекта).Кроме того, такие заявления, как top: 10px
означает разместить его на таком большом расстоянии от верхней части этого содержащего элемента.
Объявление элемента как position: relative
делает заявление, такое как top: 10px
означает "переместить элемент на 10 пикселей сверху из текущего положения".Элементы, объявленные относительно друг друга, могут перекрываться с другими элементами, хотя вы должны помнить, что исходное положение по-прежнему определяет расположение других элементов.
Я надеюсь, что это ответ на ваш вопрос.
Другие советы
Вы также можете попробовать установить позицию: относительная; Контейнер, который создает баннер (позиция #banner: относительная; и позиция img: абсолютная), затем устанавливает абсолютную позицию в нижнюю часть: 0, выравнивая ее по нижней части контейнера. Если это целая страница, просто установите ширину и высоту контейнера на 100% и удалите дополнительные отступы / поля на теле или на div.