天天看点

HTML5 - 让老浏览器支持新语义元素的几种方法

基本上所有现代浏览器都已经很好的支持HTML5新增的语义元素,但市面上还有许多机器认使用IE9之前的版本(比如IE8)。所以为了兼容这些浏览器,当我们使用新语义元素时,也要确保它们在这些古老的浏览器上能正常显示。

下面总结了三种让旧浏览器支持新语义的办法。

方法1:为语义元素添加样式

浏览器在遇到不认识的元素时,会把它们当成内联(inline)元素。而大多数HTML5语义元素都是块级元素,需要单独一行来呈现它们。

(1)首先我们可以通过一条“超级规则”,将它们显示为块级元素,避免它们都挤在一起。

article, aside, figure, figcaption, footer, header, main, nav, section, summary {
    display:block;
}
           

(2)虽然添加了上面的样式可以解决大多数浏览器的兼容问题。但对于较早版本的IE这样做还不够,它们会拒绝给无法识别的元素应用样式。 所以我们还要通过JavaScript创建新元素,这样可以骗过IE,让它识别外来元素。

<script>
    document.createElement('article');
    document.createElement('aside');
    document.createElement('figure');
    document.createElement('figcaption');
    document.createElement('footer');
    document.createElement('header');
    document.createElement('main');
    document.createElement('nav');
    document.createElement('section');
    document.createElement('summary');
</script>
           

方法2:使用html5.js垫片脚本

亲手写上面的样式还有js代码太麻烦,我们可以直接引用html.js这个脚本。

这个脚本除了创建所有的新HTML元素,还会为它们动态应用前面提到的样式,确保新元素能正确地显示为块元素。

(注意:对于html5.js的引用放在IE的条件注释中,这样这个脚本只有在旧版本的IE下才会执行。)

<html>
<head>
<!--[if lt IE 9]>
<script src="html5.js"></script>
<![endif]-->
</head>
<body>
<header>welcome to hangge.com</header>
<aside>做最好的开发者知识平台</aside>
</body>
<html>
           

方法3:使用Modernizr - 推荐

modernizr.js除了提供HTML5的检测功能,还内置了HTML5垫片脚本。如果页面已经使用了Modernizr,那就不需要再使用html5.js或者添加什么样式规则了。

原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_846.html

继续阅读