较旧的 IE 不会呈现 HTML5 标记,因此您应用于它们的样式将被忽略。(它们甚至不会渲染为像“哦,好吧,让我们假装它是一个 div”这样的块。不,它完全被忽略了)。
是的,正如您所说,最好将html5shiv添加到代码的标题中,如下所示:
<!--[if lt IE 9]>
<script src="path/to/your/shiv.js"></script>
<![endif]-->
这意味着if
l
ower t
hanIE 9
应用此脚本。
此外,CSS3 的东西也会发生同样的情况,比如border-radius 和其他东西。为此,请使用方便的 CSS3Pie。
.someRoundCorner {
border-radius:4px;
behavior:url(path/to/css3pie/htc);
}
作为建议,如果您的主要受众使用 IE < 9,则暂时仍使用与id
您实际想要的 HTML5 标签相同的 div。比使用 .js 更好(如果禁用 .js,布局将像现在一样中断) . 当旧的 IE 不再受支持时,将更容易搜索和替换 id 等于您想要的标签的文档。
更新:您的 css 是main ul, [role="main"] ul, #main ul
,但由于 IE 不知道标签 main 是什么,它会将 UL 抛出,因此您的 CSS 选择器不匹配。在这张图片中看到他不知道的所有元素,他都变成了一个空元素:
左边是它实际渲染的代码,而右边是真正的源代码。如您所见,UL 已超出main
.