【问题标题】:How to contain within relative parent container an absolute child如何在相对父容器中包含绝对子容器
【发布时间】:2019-03-15 16:48:48
【问题描述】:

有没有办法让相对父高度容器根据他的绝对子来增长?

https://codepen.io/daniele-acquaviva/pen/JzpzxG

.relative-parent {
  background: red;
  position: relative;
  text-align: center;
}

.absolute-child {
  background: yellow;
  position: absolute;
  top: 0;
}
<div class="relative-parent">
  <p> Parent div content </p>
  <div class="absolute-child">
    <p> child </p>
    <p> child </p>
    <p> child </p>
    <p> child </p>
    <p> child </p>
    <p> child </p>
  </div>
</div>

【问题讨论】:

    标签: html css frontend css-position absolute


    【解决方案1】:

    如果您将position: absolute; 用于子级,则不会将它们考虑到父级内容中。

    根据 w3schools 文档:https://www.w3schools.com/cssref/pr_class_position.asp

    元素相对于它的第一个定位(非静态)祖先元素定位


    编辑: 这可以用javascript来实现,见这里https://codepen.io/tmacpolo/pen/ywvWbb

    EDIT2: 添加了 MutationObserver 以在孩子身高发生变化时调整父母的高度 https://codepen.io/tmacpolo/pen/ywvWbb

    【讨论】:

    • 我知道,但如果在 css 中可能的话,我想找到一个解决方案。否则,可能使用 javascript 将相对父容器高度更改为绝对子容器高度,但是当绝对子容器发生变化时,我怎么知道何时更新相对父容器高度。?
    • 如果您希望父母身高与孩子身高相匹配,您不必为孩子使用绝对身高。是否必须将位置设置为绝对?
    • 是的,我需要子容器与父容器重叠,但是这样做之后的网站内容与子绝对容器没有任何距离,因此以下网站内容(其他 div示例)也是重叠的。
    • 我终于用javascript成功匹配了父div的大小和子div的大小。见这里:codepen.io/tmacpolo/pen/ywvWbb
    • 我认为这可以使用 js 中的 MutationObserver 来完成
    【解决方案2】:

    这实际上是不可能的,因为 absolute 是如何工作的,因为它与布局无关。避免折叠的唯一方法是为其父元素提供强制高度。

    【讨论】:

    • 也许用 javascript 将相对父容器高度更改为绝对子容器高度,但是当绝对子容器发生变化时,我怎么知道何时更新相对父容器高度。?跨度>
    • 使用 jquery hieght() 并在更改子 div 时可以做到这一点。 Ref: 1) api.jquery.com/height 和 $(document).on('change', 'child-div', function() { // 做一些事情并将事件记录到控制台 });希望对您有所帮助!
    • 感谢您的帮助,但目前我不考虑使用 jquery,所以我更喜欢使用纯 javaScript
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2019-12-12
    • 2011-07-20
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多