【问题标题】:CSS sticky position with nested elements带有嵌套元素的 CSS 粘性位置
【发布时间】:2018-12-03 13:23:48
【问题描述】:

据我所知,粘性位置在离开框架之前会粘在它的容器上。

我的问题是我有一些嵌套容器和其中的粘性元素,并希望它粘在它的祖父母上。

有人可能会建议我将我内心的粘性孩子冒泡,但问题是它必须留在它的父级中,因为父级是一个包含两个元素的弹性框,我希望其中一个元素在允许的同时具有粘性另一个将在溢出时滚动。

一个示例html:

<div class="main-container">
  <div class="inner-container">
    <div class="sticky">sticky child</div>
    <div class="non-sticky">non-sticky child</div>
  </div>
</div>

还有样式:

.inner-container {
  display: flex;
  flex-direction: row;
}

.sticky {
  position: sticky;
  top: 0;
}

假设main-container 是可滚动的,而inner-container 正在滚动。

我知道css没有明确的解决方案,问题是是否有任何技巧来处理它。

【问题讨论】:

  • 我完全同意没有关于这个属性值的文档。坚持工作的具体要求是什么?在块元素中放置一个粘性元素似乎会破坏它(codepen.io/nathanch/pen/eXNwPV),但在 MDN 上没有提到这个用例。

标签: html css position parent sticky


【解决方案1】:

不确定您要做什么,但这是否接近您的需要?

.inner-container {
  display: flex;
  flex-direction: row;
}

.sticky {
  position: sticky;
  top: 0;
  width: 100px;
  height: 30px;
  justify-self: flex-start;
  background-color: green;
}

.non-sticky {
  background-color: blue;
  width: 100%;
  flex-grow: 5;
  flex-shrink: 5;
}

.main-container {
  height: 140px;
  overflow: scroll;
}

.inner-container {
  height: 300px;
}
<div class="main-container">
  <div class="inner-container">
    <div class="sticky">sticky child</div>
    <div class="non-sticky">non-sticky child</div>
  </div>
</div>

【讨论】:

  • 不,你改变了我的 flexbox 的方向。我希望它是并排的,但只是在它们上面是粘性的
  • 我已经更新了代码。如果它仍然不接近你想要达到的目标,你能否让它更清楚地显示你想要的结果应该是什么。
  • 仍然不是我要解决的情况。我想解决方案无论如何都不是那么简单。正如我之前所说,可滚动的 div 是 main-container,所以 inner-container 是上下滚动的。在您的示例中,只有非粘性子项正在滚动,而例如粘性子项列的背景是静态的。希望你这次能得到我。我很确定该解决方案包括使用 html 的体系结构更改某些内容或使用 JS 实现粘性功能,因为粘性位置本身并不支持我正在寻找的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多