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