当我们为一个元素提供一个绝对值的位置属性时,它具有垂直和水平偏移(左下),它相对于具有相对位置属性的最接近的父元素定位。

如果没有父元素具有相对属性,则绝对定位的元素相对于浏览器窗口的位置。
固定定位的定义与它所说的完全相同:“固定定位是一种绝对定位,其中元素是相对于浏览器窗口定位的。”

我的主要问题是,当页面向下滚动时,为什么绝对定位的元素会向上移动,而当相对于浏览器窗口放置这两个元素时,为什么固定定位的元素却不会移动?

最佳答案

除非巧合,否则绝对定位的元素绝不会相对于浏览器窗口(即viewport)定位。在没有定位祖先的情况下,它们也不像w3schools那样相对于身体元素定位。它们也没有相对于html(即根)元素定位。



html {
  margin:20px;
  border :1px red solid;
  height:100px;
}
body {
  margin:30px;
  border :1px blue solid;
  height:90px;
}
div {
  border :1px green solid;
  height:155px;
  position:absolute;
  top:0;
  left:0;
}

<div>text</div>





如果绝对定位的元素没有祖先,则相对于initial containing block定位,canvas在上的左上角位于(0,0)。当滚动条在画布上移动视口时,绝对定位的元素将通过滚动相对于视口移动。

关于css - 为什么向下滚动页面时绝对放置的元素向上移动,而固定位置的元素却不移动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50898676/

10-12 00:22
查看更多