Modernizr 是一個(gè) javascript 庫(kù)耙旦,它的作用是檢查你的游覽器是否支持 CSS3 或者 HTML5 的特性而自動(dòng)添加一些類(lèi)名(class)到 <html> 十籍,并替換掉原來(lái)的 .no-js(簡(jiǎn)單來(lái)說(shuō)傻丝,Modernizr 就是一個(gè)CSS3/HTML5 的測(cè)試器,你需要測(cè)試什么其骄,就可以到它的官方網(wǎng)站配置啃奴,選擇自己需要測(cè)試的元素)。
什么是Modernizr钢拧?
Modernizr 是一個(gè)用來(lái)檢測(cè)瀏覽器功能支持情況的 JavaScript 庫(kù)蟹漓。 目前,通過(guò)檢驗(yàn)瀏覽器對(duì)一系列測(cè)試的處理情況源内,Modernizr 可以檢測(cè)18項(xiàng) CSS3 功能以及40多項(xiàng)關(guān)于HTML5 的功能葡粒。 它比傳統(tǒng)檢測(cè)瀏覽器名稱(chēng)(瀏覽器嗅探)的方式更為可靠。 一整套測(cè)試的執(zhí)行時(shí)間僅需幾微秒。 此外嗽交,Modernizr 網(wǎng)站通過(guò)定制腳本只對(duì)你感興趣的元素進(jìn)行檢測(cè)卿嘲,從而實(shí)現(xiàn)效率優(yōu)化。
下載 Modernizr
與其它 JavaScript 庫(kù)相同的是夫壁,Modernizr 可提供 development 和 production 版本拾枣。 與大多數(shù)庫(kù)相比,唯一的不同之處是盒让,空格和注釋已經(jīng)從 production 版本中刪除了梅肤,這樣可以減少下載量的大小。 Modernizr 采取了不同的方法邑茄。 development 版本在某種意義上可稱(chēng)為是“廚房中的水槽”—它幾乎包含了一切姨蝴。 production 版本只包含了你選擇的那些元素,這樣能夠顯著降低下載量撩扒。 在很多情況下似扔,production 版本可以縮小為development版本大小的二十分之一。
重點(diǎn):
<head> 的最后三行應(yīng)該如下所示:
</style>
<script src="js/modernizr.js"></script>
</head>
在html標(biāo)簽中添加no-js的class搓谆,當(dāng)支持javascript的瀏覽器啟動(dòng)時(shí)炒辉,會(huì)動(dòng)態(tài)地刪除這個(gè)no-js的class。并且會(huì)在html標(biāo)簽中添加當(dāng)前瀏覽器所支持的元素同名class泉手。
一句忠告
Modernizr 是一個(gè)強(qiáng)大而有用的工具黔寇,但是這并不意味著你就應(yīng)該使用它。 并不是在所有情形下均必須使用 Modernizr 給瀏覽器提供多種樣式斩萌。 如果你主要關(guān)注的對(duì)象是 Internet Explorer缝裤,那么考慮使用IE conditional comments。 你也可以使用CSS層疊覆蓋一些樣式颊郎。 例如憋飞,先使用hexadecimal color,然后使用 rgba() 或 hsla() 覆蓋它姆吭。 舊版本的瀏覽器會(huì)使用第一個(gè)值并且忽略第二個(gè)值榛做。
Modernizr 真正地變成現(xiàn)實(shí)是當(dāng)它與 polyfills 和其它 JavaScript 相結(jié)合的時(shí)候。但是記住内狸,通常很容易創(chuàng)建屬于你自己的適合支持功能的測(cè)試检眯。例如,下面就是你測(cè)試某個(gè)瀏覽器是否支持 required 屬性的全部代碼(代碼位于required_nomodernizr.html 中):
var elem = document.createElement('input');
if (typeof elem.required != 'boolean'){
// required is not supported
}
更加詳細(xì)的說(shuō)明可查看:http://caibaojian.com/modernizr-js.html