腻子脚本(polyfill)指的是一段JavaScript代码,能够赋予浏览器未曾有过的功能。目前,几乎所有CSS3和HTML5功能都有各自对应的腻子脚本,包括视频回放和阴影,从而让那些老得走不动道儿的“老家伙”们也能闪现青春的光芒。
Paul Irish维护了一个完整的腻子脚本的列表,地址是:https://github.com/modernizr/modernizr/wiki/html5-cross-browserpolyfills
要在页面中添加一段腻子脚本,首先要下载并将其保存在网站的一个文件夹中。我为此创建了一个helpers文件夹。然后,在页面<head>标签中添加一个
<script type="text/javascript" src="helpers/selectivizr.js"></script>
怎么确定是否需要某个腻子脚本呢?推荐大家使用Modernizr。
Modernizr(http://modernizr.com)是一个JavaScript文件,能够帮你检测用户浏览器对HTML5和CSS3功能的支持情况,然后为顶级的<html>标签添加一组类,标明浏览器支持什么功能。另外,它还会设定一个JavaScript对象modernizr 的属性,以便你通过JavaScript来测试这些功能。Modernizr添加的类主要是为CSS提供便利。
html5shiv.js(http://code.google.com/p/html5shiv):让IE8及更低版本的IE识别section、 article、nav等HTML5元素。
selectivizr(http://www.selectivizr.com):让IE(6/7/8)支持::firstchild等高级CSS选择符。
IE9.js(http://code.google.com/p/ie7-js):修复从IE6到IE9的很多bug和缺损功能。
CSS3Pie(http://css3pie.com):让IE6到IE9支持圆角、背景渐变、边框图片、盒阴影、RGBa颜色等可视化的CSS3功能。
Respond.js(https://github.com/scottjehl/respond)让旧版本浏览器支持媒体查询。
-prefix-free(http://lea.verou.me/projects)为需要厂商前缀的CSS3声明添加前缀(参见第4章)。
borderBoxModel.js(https://github.com/albertogasparin/borderBoxModel):让IE6和IE7支持CSS3的box-sizing属性。