Internet Explorer 里不会调整具有 100% 相对高度的 DIV 标签

警告

已停用、不受支持的 Internet Explorer 11 桌面应用程序在某些版本的 Windows 10 上已通过 Microsoft Edge 更新永久禁用。 有关详细信息,请参阅 Internet Explorer 11 桌面应用停用常见问题解答

本文介绍一种设计行为,即在 Internet Explorer 9 或更高版本中,不调整相对高度为 100% 的 DIV 标记的大小。

原始产品版本: Internet Explorer 9 及更高版本
原始 KB 数: 2674902

现象

在使用 Internet Explorer 9 或更高版本时,你正在使用一个具有绝对高度的表格,其中一行至少有两个单元格。 一个单元格包含一些文本,另一个单元格包含相对高度为 100% 的 DIV 标记。 文本不适合预设的高度,因此表格会调整尺寸。 DIV 标签保持在表格的初始固定高度,不会自动调整大小。

详细信息

此行为是设计使然,适用于所有受支持的 Internet Explorer 9 及更高版本的标准模式。

注意

使用 Internet Explorer 9 或更高版本时,在 Quirks 模式和 Quirks 模式仿真(QME)中,行为可能有所不同。

下面是上面概述的行为示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <body>
        <table style="height:50px;" border="1px">
            <tr>
                <td style="height:100%">
                    <p>
                        this text does not fit and will resize the table<br />this text does not fit and will resize the
                        table<br />
                        this text does not fit and will resize the table<br />this text does not fit and will resize the
                        table<br />
                    </p>
                </td>
                <td style="height:100%; width:50px;">
                    <div style="height:100%; border:1px solid red;"></div>
                </td>
            </tr>
        </table>
    </body>
</html>

根据 W3 规范,单元格的内容区域高度不会受到行的高度的影响,任何额外的高度都应分配给单元格的内边距。 然后,单元格的子元素应根据单元格内容框的百分比高度确定其高度,该内容框并不受行高度的影响。

根据 CSS 2.1,单元格框的高度是内容所需的最小高度。 表单元格 height 的属性可能会影响行的高度(见上图),但它不会增加单元格框的高度。 小于行高度的单元格框会收到额外的上填充或底部填充。

有关详细信息,请参阅 定义文档兼容性