如何在IE8中修复绝对定位?

edt*_*edt 24 css css-position internet-explorer-8

在我使用的每个浏览器中,除了ie8之外,绝对定位的元素可以根据具有相对定位的最近父元素来定位.

下面的代码显示了表格中的两个div.顶部div具有position:relative,但是,嵌套的,绝对定位的元素不遵循其边界(在ie8中,它位于页面的底部而不是父div的底部).

有人知道解决这个问题吗?

<style>
#top {
position: relative;
background-color: #ccc;
}
#position_me {
background-color: green;
position: absolute;
bottom: 0;
}
#bottom {
background-color: blue;
height: 100px;
}
</style>
<table>
  <tr>
    <td><div id="top"> Div with id="top"
        <div id="position_me"> Div with id="position me" </div>
      </div>
      <div id="bottom"> Div with id="bottom"
        <p>Lorem ipsum dolor sit amet.</p>
      </div></td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

Sam*_*son 24

声明一个doctype.我鼓励您使用HTML5文档类型:

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)


yak*_*ins 19

添加这个:

#top {
//height: 100%;
}
#position_me {
//left: 0;
}
Run Code Online (Sandbox Code Playgroud)

它迫使IE8在怪癖模式下正确计算位置.有很多方法可以获得它:

//zoom: 1;
//writing-mode: tb-rl;
Run Code Online (Sandbox Code Playgroud)

http://haslayout.net/haslayout


Ser*_*gei 13

这是因为你没有使用文档类型.而IE工作在"怪癖"模式.

试试这个doctype:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Run Code Online (Sandbox Code Playgroud)


lus*_*chn 6

我总是使用HTML5 doctype,但在我的情况下,唯一的问题是父元素需要"position:relative;" 特别设定.在那之后,它工作得非常好.