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>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值