html - 具有嵌套元素的 CSS 粘性位置

标签 html css position parent sticky

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

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

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

示例 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 没有明确的解决方案,问题是是否有任何技巧可以处理它。

最佳答案

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

.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>

关于html - 具有嵌套元素的 CSS 粘性位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53594812/

相关文章:

html - 将 iframe 从正文顶部拉伸(stretch)到页面底部

html - 使用 flexbox 将图像排成一行

jquery - 仅显示点击的 div,带切换

html - position fixed top 在手机上出错了,坚持到左边

javascript - 如何快速找到绝对定位的子元素的相对定位的 HTML 父元素?

html - 如果其子元素具有绝对位置,如何获取父元素的高度

jquery - 将来自父 div 的文本 float 到两个并排的子 div 上?

javascript - 添加类后无法从元素中删除该类

html - css: z-index 不工作

javascript - jquery .hide 在这种情况下不起作用