overflow-y: auto, 把 position:absolute 截断的问题

WechatIMG11.png

设置了overflow-y: auto;下面的子元素设置了absolute; absolute想显示在父辈元素的外面截断了,想要的要过是 子元素能显示在父辈元素的外面,同时父元素能有滚动条;

阅读 13.6k
3 个回答

不能换个结构?一定要子元素放在滚动里?滚动的话就会发生裁剪.或者你多套一层。position: relative和overflow两个属性不要放在一个元素上用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #parent {
      position: relative;
      padding-top: 50px;
    }
    #scroller {
      overflow-y: auto;
      height: 300px;
      background: red;
    }
    #child {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 50px;
      background: blue;
    }
  </style>
</head>
<body>
  <div id="parent">
    <div id="scroller">
      <div style="height: 500px"></div>
      <div id="child"></div>
    </div>
  </div>
</body>
</html>

absolute虽然脱离了文档流但是,它依然是离他最近的一个position:relative/abs/fixed容器的子元素,如果一定要超出的话,保证你absolute元素和被超出的容器之间没有position:relative/abs/fixed属性,然后把abslute相对定位的容器设置在超出元素的任意父级上就可以了,或者你用fixed强行超车

position: absolute 之后就脱离了原本的文档流,所以想继续影响原来的布局就不太可能了。这种情况只能自己想办法,比如用 position:fixed

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题