css - 为什么 "display: table-cell"坏了 "position: absolute"

标签 css alignment position

我遇到了一个奇怪的问题。我用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: relative”更改为“position: absolute”,图像将无法再与底部对齐。这是 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 将您的元素从它所在的位置取出,并将其放置在相对于未声明为静态的最内层元素的位置。不再参与任何其他元素的对齐,因此它不再充当表格单元格(声明无效)。此外,诸如 top: 10px 之类的声明意味着将其放置在距包含元素顶部那么远的位置。

将元素声明为 position: relative 使得声明如 top: 10px 意味着“将元素从当前位置的顶部移动 10px”。相对于声明的元素可能会与其他元素重叠,但您应该记住,原始位置仍然决定其他元素的排列。

我希望这能回答您的问题。

关于css - 为什么 "display: table-cell"坏了 "position: absolute",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1608983/

相关文章:

html - 使用 Bootstrap 面板删除 bootstrap 表格边框

android - React native box shadow图像解决方案

html - 2个div并排对齐,如何使右侧div填充宽度为100%?

jquery - 让具有绝对位置或固定位置的父项的子项拉伸(stretch)到视口(viewport)的全高

html - 居中两个 Div

html - Dreamweaver 模板 master.css 不在本地磁盘上

html - 让div向右浮动并对齐变量div的底部

c# - 如何为 ListBoxItem 创建标题?

css - 菜单中的第 3 级始终位于最顶层

javascript - 三.JS,忽略 parent 的轮换