【问题标题】:Expand Inner div height to meet the outer div height展开内部 div 高度以满足外部 div 高度
【发布时间】:2016-07-04 16:50:37
【问题描述】:

我想根据外部 div 改变内部 div 的高度。 在我的情况下,我有两个内部 div 一个具有固定高度,外部 div 根据它扩展其高度(我在那里使用'clearfix')。但我需要另一个内部 div 也将其高度更改为外部 div 高度 高度:100%;不工作。 这是一个显示我的问题的 JsFiddle 链接。 https://jsfiddle.net/qjsqxk7j/18/

HTML ->

<div class="outer clearfix">
  <div class="col-xs-3 left">
  </div> 
  <div class="col-xs-9 right">
  <div class="inner">
    <label>sssss</label>
    <button class="btn-default">
      sss
    </button>
  </div> 
</div>

CSS ->

.right {
    height: 100%;
    background-color: blue;      
}
.left {
    height: 200px;
    background-color: red;

}
.inner{
    position: relative;
    top: 50%;
    transform: translateY(-50%)
}
.outer {
    background-color: yellow;
    position: relative;
    max-width : 500px; 
}

实际上,我希望蓝色 div 占据所有黄色空间,并且按钮和标签位于其垂直中心。 (我希望我的外部 div 获得它的内部 div 高度并相应地改变。然后当外部 div 高度改变时,另一个内部 div 也必须改变它的高度。但它不会。)

【问题讨论】:

    标签: html css


    【解决方案1】:

    试试下面的代码,是的,我已经从父元素中删除了 clearflex,因为它清除了两个子元素的浮动。当子元素高度增加时,它会增加和减少隐藏,反之亦然,即父元素相同。

      .outer{
      width:100%;
      height:auto;
      background:yellow;
      position:relative;
      border-bottom:1px solid #111;
      display:table;
    }
    .outer > .right{
      width:50%;
      height:auto;
      background:red;
      float:left;
      word-break : break-all;
    }
    .outer > .left{
      width:50%;
      height:auto;
      background:blue;
      float:left;
    }
    

    【讨论】:

    • 我希望我的外部 div 获得其内部 div 高度之一并进行相应更改。所以当外部 div 的高度改变时,另一个内部 div 也必须改变它的高度。但它不会。
    • 感谢您的回复。好像没什么用我希望在其中一个内部 div 具有给定高度的情况下。如果我必须更改您的代码 .outer > .right{ height: 200px;它不工作。
    • @bashi 正在工作,它使您的 .outer 高度与 200px 的红色相同;这就是为什么我将border-bottom 分配给 .outer div 以查看它的高度是否在增加。
    • 我的最终输出应该是这样的 jsfiddle.net/qjsqxk7j/31 我试过你的代码没有给我预期的 o/p。
    • 在这种情况下,您必须将 .right 应用到 .outer 和 .right 和 .left 高度的 200px 应用到 100%。
    【解决方案2】:

    请看这里jsfiddle

    我在 2 列(左和右)上使用了 display:table-celldisplay:table.outer。为此,您需要从引导程序给出的列中覆盖float:left

    添加代码

    .left,.right {  
    display:table-cell;
    float:none;
    vertical-align:middle;
    }
    .outer {  
    display: table; 
    }
    

    或带一点JQ:jsfiddle

    代码:

    var hgt = $(".outer").height()
    $(".left").height(hgt)
    

    如果这就是你要找的东西,请告诉我

    【讨论】:

    • 部分是的。它删除了内部元素的垂直居中对齐。我的最终输出应该是这样的jsfiddle.net/qjsqxk7j/31 但我会尝试你的建议。
    • 只需将`vertical-align:middle;`添加到.left,.right;更新了我的答案和 jsfiddle 链接
    • 谢谢。有效。 display: table-cell 是否会覆盖 Bootstrap 网格行为?你认为有没有一种方法可以让我保留 Bootstrap 网格并获得相同的结果(没有 JQuery)。
    【解决方案3】:

    更改一些 css 删除您的评论代码

    .right {
        height: 200px;
        background-color: red;
    
    }
    .left {
        height: 100%;
        background-color: blue;      
    }
    .inner{
       position: relative;
        top: 50%;
        transform: translateY(-50%);
    }
    
    .outer {
      background-color: yellow;
      position: relative;
      max-width : 500px;
      height:200px;
    
    }
    

    https://jsfiddle.net/qjsqxk7j/25/

    【讨论】:

    • 感谢@Lalji 的回复。我想要一种方法来做到这一点,而不会给外部班级任何高度。 (在我的实际场景中,'left' divs 的高度正在改变,我只希望左内部 div 具有固定的高度)
    • 移除外部高度并尝试
    • 移除您放置的外部高度?然后它的代码与我提出的问题相同。它不工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2012-02-14
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多