html - child 相对于滚动祖 parent 的绝对位置

标签 html css

我有一个 ul,在 li 里面,我有一个子 div。当我在 ul 中滚动时,我希望子 div 相对于 ul 保持定位。我能够在 ul 和 li 上使用 position static 获得所需的结果,但是当我将 ul 和 li 的位置更改为 relative 时,它​​不起作用。

  <ul class="grandparent">
    <li class="parent">
      <div class="child">
      Child
      </div>
      <div >
      <div>
      Spam
      </div>
      <div>
      Spam
      </div>
     <div>
      Spam
      </div>
     <div>
      Spam
      </div>
      </div>
    </li>
     <li>
      <div>
      Spam
      </div>
      <div>
      Spam
      </div>
     <div>
      Spam
      </div>
     <div>
      Spam
      </div>
      </div>
    </li>
    </ul>

这是工作副本的链接 https://jsfiddle.net/4jhzfm1s/1/

所以我的问题是,如何在相对定位 ul 和 li 的同时获得预期的效果。

最佳答案

如果您让父级滚动并只保留祖父级,它会按预期工作:

.grandparent {
  position: relative;
}
.parent {
  height: 100px;
  overflow: auto;
}
.child {
  position: absolute;
  top: 50px;
  left: 50%;
}
<ul class="grandparent">
  <li class="parent">
    <div class="child">
      Child
    </div>
    <div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
      <div>
        Spam
      </div>
    </div>
  </li>
</ul>

您还可以设置 top:auto 和 margin-top:50px ,这样您就可以在绝对(类似于固定)示例中设置多个元素 https://jsfiddle.net/4jhzfm1s/3/

关于html - child 相对于滚动祖 parent 的绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37682687/

相关文章:

html - 带有固定顶部 : text overflows 的 Bootstrap 4 导航栏

jquery - 如何根据 sql 表中的值更改 div 宽度?

javascript - 背景位置上的补间不起作用

javascript - 替换 HTML 表格中的值?

javascript - jQuery Quicksand 网格对齐问题(基于 Bootstrap 的网站)

css - IE7 和 IE8 中旋转透明 png 周围的黑边

html - CSS 动画自动滚动文本问题

javascript - 禁用具有多个输入的按钮

javascript - 拖放图像,在 Canvas 上显示该图像

html - Flexbox:第二行未与第一行对齐