HTML - 溢出和位置绝对问题

标签 html css overflow css-position

我有一个患有 margin-top 的 child 。为了正确应用margin-top,我需要为父级设置一个overflow auto。不幸的是,这个溢出自动会切断已经定位为绝对的重叠 child 。有变通办法吗?

js Fiddle

HTML

<div class="a"> </div>
<div class="b">
   <div class="overlap" ></div>
   <p>
    Lorem Ipsum, arula jkasds 
   </p>
</div>

CSS

.a {  
  position: relative;
  width: 100%;
  background-color: #005a73;
  height: 100px;
  overflow: auto;
}

.overlap {
  width: 50px;
  height: 80px;
  position: absolute;
  background: yellow;
  top: -60px;
  left: 20px;
}

.b {
  /*overflow: auto; */
  position: relative;
  width: 100%;
  height: 840px;
  background-color: #f7f7f7; 
}

p {
  margin-top: 50px;
}

最佳答案

这是您可能会如何解决问题。

将常规内容包装在单独的 div (.wrap) 中,并在其上指定 overflow: auto

这样,您仍然可以根据需要调整绝对定位元素并获得您需要的溢出/滚动效果。

请参阅下面的原型(prototype)。

.a {
  position: relative;
  width: 100%;
  background-color: #005a73;
  height: 100px;
}
.overlap {
  width: 50px;
  height: 80px;
  position: absolute;
  background: yellow;
  top: -30px;
  left: 20px;
}
.b {
  position: relative;
}
.b .wrap {
  overflow: auto;
  width: 100%;
  height: 100px;
  background-color: tan;
}
p {
  margin-top: 10px;
}
<div class="a"></div>
<div class="b">
  <div class="overlap"></div>
  <div class="wrap">
    <p>Lorem Ipsum, arula jkasds</p>
    <p>Lorem Ipsum, arula jkasds</p>
    <p>Lorem Ipsum, arula jkasds</p>
    <p>Lorem Ipsum, arula jkasds</p>
    <p>Lorem Ipsum, arula jkasds</p>
    <p>Lorem Ipsum, arula jkasds</p>
  </div>
</div>

关于HTML - 溢出和位置绝对问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29549494/

相关文章:

html - CSS 绝对位置,其中 div 的左上角位于父级的右上角

jquery - X-editable datepicker 一直在同一个地方弹出 - 如何让它在实际日期字段旁边弹出?

javascript - 如何在鼠标悬停时覆盖 div/box?

css - 顺风 : text-overflow: ellipsis?

html - 溢出隐藏在 flex child 的 child 身上

go - 迭代边界与数据类型相同

html - 访问 React Router 历史堆栈

html - flex-items 空间没有在小屏幕上分配

javascript - 抓取选定的<按钮>

javascript - 根据其他 div 高度设置动画 div 高度