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

如何检测子div的高度超过父div的高度

  •  0
  • flyingbee  · 技术社区  · 3 年前

    我有一个div a,它包含div B,它包含div C,它包含div D,其中div a有a 违约 高度为40px。就像下面这样。

    <div id='A' style="height: 40px">
      <div id='B'>
         <div id='C'>
             <div id='D'></div>
         </div>
      </div>
    </div>
    

    问题是,divc的实现方式是它可以动态地改变高度。因此,它可能会超过默认的分区A高度(40px),并导致一些外观问题。

    我想要实现的是保持diva的高度为40px,只要其子div的高度不超过40px。但是,如果其任何子div的高度超过40px,我希望子div的高度为 推翻

    我想知道是否需要编写一个方法来动态计算每个子div的高度,并执行以下操作 getElementById('A').style.height = null 如果返回的子高度大于40px。

    有更好或更简单的方法吗?

    2 回复  |  直到 3 年前
        1
  •  4
  •   wazz    3 年前

     min-height: 40px;
    
        2
  •  -1
  •   Katheer    3 年前

    根据my point,您无需检查每个子元素的高度。

    如果检查B,则子元素高度足够大,因为这是子元素C和D的父元素

    据此,下面的JS代码将为您提供解决方案

    // get parent div #A 
    var parentElement = document.getElementById('A'); 
    
    // parent div #A initialHeight
    var parentDivOffsetHeight = 40; // no need to mentionion px
    
    // get child div #B offest height
    var childDivOffsetHeight = document.getElementById('B').offsetHeight;
    
    // check if child div height is greater than parent div or not
    if(childDivOffsetHeight > parentDivOffsetHeight){
        //set child div height to parent div
        parentElement.style.height = childDivOffsetHeight+'px';
    }
    

    相关JS小提琴: https://jsfiddle.net/katheer_mizal/3ouypevd/18/

    要检查元素高度,可以使用以下方法

    阴蒂 包括填充。

    var clientHeight = document.getElementById('B').clientHeight;
    

    越界 包括填充、滚动条和边框。

    var offsetHeight = document.getElementById('B').offsetHeight;
    

    等于$('content').css('height')。

    var offsetHeight = document.getElementById('B').style.height;