CSS - Internet Explorer和<main>标签背景

16

我有一个相当简单的布局,Firefox和Chrome都可以正常呈现,但Internet Explorer(版本11)似乎无法为<main>元素渲染任何背景颜色。

<main>元素是<body>元素的子元素,无论使用background还是background-color都没有任何区别。<main>始终具有与<body>相同的背景。我没有找到任何说明这是否是IE中的错误的内容。

请使用Internet Explorer查看此jsfiddle以了解我的意思。

显然,我可以将<main>替换为<div id="main">并更新CSS选择器,但我想了解为什么会发生这种情况。


实际上很容易找到这种情况发生的原因 - Niels Keurentjes
2个回答

25

IE11 不支持 <main> 元素的原生使用。您可以通过使用像 Modernizr 这样的脚本,或者一行无害的 JS 代码来引入其支持:

document.createElement('main');

该元素不会被插入DOM中,但它现在将被IE视为一个真正的元素。之后,它仍然没有适当的样式。请在您的CSS中添加以下内容:

main {
    display:block;
}

一切都会好的。你现在看不到内容的原因是因为IE没有将它添加到盒子模型中,没有进行这2个步骤,因此它没有'布局'或'大小'。它只是看不见的,这就是为什么你看到body。它包含元素,这些元素基于<main>元素的左上角坐标被(有点)正确地呈现。


4
我从未想过在最新的IE版本中不支持 <main> 标签。现在我知道了,我发现在这个问题中,添加 display: block; 看起来非常有效。 - hololeap
1
很合乎逻辑。HTML5不允许随意使用未知元素,因此IE没有支持任何未知元素是正确的。IE11和Chrome 26以及FF21年龄差不多,是第一批支持这个非常新的HTML5补充的浏览器。由于该元素是未知的,在用户代理样式表中也没有默认样式是有道理的。 - Niels Keurentjes
4
内容出现在<main>元素中,但它似乎默认以内联元素呈现,可能是因为IE不认识它。这似乎只是IE相对较长的更新周期的副作用。保留<main>并在CSS中添加 display: block; 可以让我既使用HTML5元素又兼容旧版浏览器。 - hololeap
我的天啊,IE什么时候会被弃用? - Amin Jafari

3
简单来说,IE11不支持<main>标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接