【问题标题】:Dynamic div height using css tables doesn't work in IE9 or IE10使用 css 表的动态 div 高度在 IE9 或 IE10 中不起作用
【发布时间】:2013-12-15 07:23:29
【问题描述】:

考虑以下小提琴:http://fiddle.jshell.net/du8Ws/

目的是在第一个 div(蓝色)的大小发生变化时调整底部 div(红色)的大小以消耗剩余的垂直空间。

在 chrome 或 IE11 中运行时,观察如果用户单击切换大小按钮,蓝色 div 会改变大小,红色 div 会相应改变大小,这样蓝色、绿色和红色 div 都包含在同一个高度(等于粉红色的 div 高度供参考)。

在 IE9 或 IE10 中运行时,红色 div 的高度将比它应该的高出等于蓝色 div 的高度。

如何改变这一点,使其在 IE9 和 IE10 中的工作方式与仅使用 css(没有 javascript!)在 Chrome 中的工作方式相同?

请注意,红色 div 的高度必须不为零。

pstenstrm 提供了一个很好的解决方案,看起来可以正确显示,但是在这种情况下,红色 div 的实际高度等于其子级(文本),而不是其父级的剩余可用空间,而内部和外部高度占用更多空间(由于填充/边距)。我打算在这个红色 div 中嵌入一个控件,它要求高度正确。

谢谢!

【问题讨论】:

    标签: css internet-explorer cross-browser internet-explorer-9 internet-explorer-10


    【解决方案1】:

    当我从 Table 类中删除 display:table 属性时。它开始工作并将数据向下推送而不增加整个容器的高度。作为预期的行为。但是红色的补丁没有显示出来。

    下面是CSS

    .table {
        background-color: #FFFF00;
        height: 100%;
        width: 100%;
    }
    

    【讨论】:

    • 红色 div 在这种情况下没有任何高度,这是重要的行为。我将更新原始问题以使其更清楚。
    【解决方案2】:

    如果解决方案不必使用表格,您可以使用溢出、填充和负边距的组合来获得此效果。它还会产生更清晰的 html。

    您需要的标记:

    <div id="reference"></div>
    
    <div class="container">
      <div class="first">First</div>
      <div class="second">Second</div>
      <div class="third">Third</div>
    </div>
    

    还有css:

    #reference {
      background: pink;
      height: 300px;
      width: 50px;
      float: left;
    }
    
    .container {
      background: yellow;
      height: 300px;
      width: 50px;
      float: left;
      overflow: hidden;
    }
    
    .first {
      height: 50px;
      background: blue;
    }
    
    .first.big {
      height: 100px;
    }
    
    .second {
      background: green;
    }
    
    .third {
      background: red;
      padding: 0 0 999px;
      margin: 0 0 -999px;
    }
    

    红色 div 的内边距会一直向下扩展背景。容器overflow: hidden; 将确保它不会扩展太多。

    【讨论】:

    • 感谢您的回复。这是一个很好的答案,但是在这种情况下,第三个 div 的高度不正确,即使示例中的背景显示正确。 div 的高度等于它的内容(即文本的高度),而内部和外部高度都大于 1000px。在原始示例中,红色 div 的高度为 400px。我对这种效果的预期使用要求 div 的高度正确。我会在原始问题中更清楚地说明这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2013-06-25
    • 1970-01-01
    • 2012-05-08
    • 2014-07-21
    • 2013-02-23
    • 2018-06-03
    相关资源
    最近更新 更多