使用scroll上的transform将元素位置固定为parent

时间:2017-07-27 09:30:40

标签: css css-position css-transforms

我理解使用position:fixed transform相对于父元素的子元素是可能的position:absolute。滚动文档时,是否可以保持固定孩子相对于的位置,而不是文档?

演示 https://jsfiddle.net/ds0vbtbt/3/

更新:以上是我的问题的简化版本。 header('Content-Type:application/json'); :不是我正在寻找的解决方案。

更新: 一旦执行初始变换,没有JS似乎不可能

2 个答案:

答案 0 :(得分:1)

是的,如果包含元素设置为relative,则可以使用position绝对位置。你根本不需要转换属性。

.test {
  width: 400px;
  height: 400px;
  border: 1px solid;
  position: relative;
}

.box {
  margin-top: 20px;
  width: 300px;
  height: 100px;
  border: 1px solid red;
  position: absolute;
}

更新了小提琴:https://jsfiddle.net/ds0vbtbt/1/

位置为绝对的元素;相对于最近定位的祖先定位(而不是相对于视口定位,如固定)。

然而;如果绝对定位元素没有定位祖先,它将使用文档正文,并随页面滚动一起移动。

更新: position: fixed总是相对于视口 - 所以如果更改窗口大小,它会更新,但滚动时不会。也就是说,带有变换的元素充当固定位置后代的包含块,因此位置:固定在具有变换的某些内容下不再具有固定行为。它们在应用于同一元素时确实有效;元素将被定位为固定,然后转换。

答案 1 :(得分:0)

您正在使用 position:fixed 来修复带有视口的元素。 对子元素使用 position:absolute 来修复父元素。