当前位置: > > > HTML5 - 让老浏览器支持新语义元素的几种方法

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或者添加什么样式规则了。
<script src="modernizr.js"></script>
评论0