代码之家  ›  专栏  ›  技术社区  ›  Jakov

当子元素增加时,如何增加父元素?

  •  0
  • Jakov  · 技术社区  · 6 年前

    我有两个类,我需要使它们的元素具有相同的高度。随着子元素高度的增加,父元素也需要增加其高度。

    父元素类是 .user-data 子元素类是 .scheduleWorkingPeriodContainer .

    .user-data {
        position: relative;
        float: left;
        box-sizing: border-box;
        min-height: 40px;
        align-items: center;
        text-align: center;
        border-left: 1px solid #d0d0d0;
        border-bottom: 1px solid #d0d0d0;
        background-color: white;
    }
    
    .scheduleWorkingPeriodContainer {
        position: absolute;
        z-index: 1;
        width: 100%;
        display: block;
        overflow-x: hidden;
        height: auto;
     }
    

    父元素和子元素需要具有相同的类,并且我也不能更改 position 属性 用户数据 .scheduleWorkingPeriod容器 因为这里没有显示代码。

    有人能帮忙吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   AndrewL64    6 年前

    如本条所述 other answer ,除非使用固定高度或javascript,否则无法根据绝对定位元素设置父级的高度。


    使用javascript,只需检索绝对定位子元素的高度 .scheduleWorkingPeriodContainer 然后将检索值设置为 relative positioned 母元素 .user-data .


    检查并运行以下内容 代码片段 对于我上面描述的一个实际例子。在下面的代码片段中,我将父元素的高度更改为 5px 不仅仅是 absolute positioned 子元素,以便您可以看到父元素的额外高度:

    /* JavaScript */
    
    var child = document.querySelector(".scheduleWorkingPeriodContainer");
    var parent = document.querySelector(".user-data");
    
    parent.style.height = parseInt(window.getComputedStyle(child).height) + 5 + "px";
    /* CSS */
    
    .user-data {
        position: relative;
        float: left;
        box-sizing: border-box;
        min-height: 40px;
        align-items: center;
        text-align: center;
        border-left: 1px solid #d0d0d0;
        border-bottom: 1px solid #d0d0d0;
        background-color: green;
        width: 100%;
    }
    
    .scheduleWorkingPeriodContainer {
        position: absolute;
        z-index: 1;
        display: block;
        width: 100%;
        overflow-x: hidden;
        height: auto;
        background-color: red;
     }
     html, body {width: 100%;height: 100%; margin: 0; padding: 0;}
    <!-- HTML -->
    
    <div class="user-data">
      <div class="scheduleWorkingPeriodContainer"><p>ABCD</p><p>ABCD</p><p>ABCD</p><p>ABCD</p>
      </div>
    </div>