打破一个绝对定位的元素从其相对定位的祖先?

jem*_*ger 2 css positioning css-position

假设我有一个类似的文档

<style type="text/css">
div {
  border:1px solid;
  padding:15px;
}

#i_am_relatively_positioned{
  background-color:#fcc;
  margin:50px;
  padding:50px;
  position:relative;
}

#inner {
  background-color:#cfc;
}

#i_want_to_be_absolute_to_body{
  background-color:#ccf;
  left:0;
  position:absolute;
  top:0;
}
</style>

<body>
  <div id="i_am_relatively_positioned">
    <div id="inner">inner</div>
    <div id="i_want_to_be_absolute_to_body">absolute to body</div>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

有没有一种方法,使绝对定位相对于body元素,而不是其直系亲属容器#i_want_to_be_absolute_to_body?

我知道我可以使用一些负面的顶部和左边,但这似乎是kludgey - 这是我唯一的选择吗?

Sea*_*ean 5

您可以使用一些javascript来执行此操作(我假设您无法更改标记?).

document.body.appendChild(document.getElementById('i_want_to_be_absolute_to_body'));
Run Code Online (Sandbox Code Playgroud)

  • 不,这会破坏事情(在IE8和Chrome中测试).只需执行appendChild,就可以在DOM中移动节点.我必须使用SharePoint和客户端使用的另一个CMS执行此操作(出于与您正在执行的操作类似的原因,通常我将元素从一个容器移动到另一个容器). (2认同)