日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

modernizr.js的介绍和使用

發布時間:2024/1/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 modernizr.js的介绍和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:https://www.cnblogs.com/-simon/p/5907053.html

Modernizr幫助我們檢測瀏覽器是否實現了某個feature,如果實現了那么開發人員就可以充分利用這個feature做一些工作,反之沒有實現開發人員也好提供一個fallback。所以,我們要明白的是Modernizr只是幫我們檢測feature是否被支持,它并不能夠給瀏覽器添加那些本來不支持的feature。

Modernizr在2010和2011年均贏得了?.net Award for Open Source App of the Year?,要知道它的競爭對手都是像Wordpress、Drupal這些重量級選手。同時在2011年,它的首席開發者?Paul Irish?贏得了Developer of the Year大獎。

其實,這個類庫使用非常簡單,簡單到你把?官方文檔?(單頁)從頭到尾看一遍就完全了解它的使用方法了。接下來,我做一點簡單的介紹。

Setting-Up Modernizr

在官方網站(?http://modernizr.com?)上我們可以看到有兩個下載選項,Development和Production版本。其實它們都會導向同一個下載頁面,只不過前者會幫我們把選項預先勾上而已。

通常我們需要檢測的新特性基本都囊括在了這些選項中,我們可以根據自己需要,定制化的選擇需要檢測的feature。

下載完后我們就可以在?<head>?中引用這個類庫。由于Modernizr幫我們內置了?html5shiv?類庫,所以我們必須在?<body>?加載之前引用這個類庫。當然你如果針對的是IE9+的瀏覽器,那么大可以在頁面元素加載完后再引入,但這樣就會有?FOUC?這樣極不友好的效果出現。

最后,我們需要在?<html>?標簽中加入?no-js?類,以免瀏覽器禁用了JavaScript。

Working With Classes

使用了Modernizr后,頁面中渲染后的html代碼是這個樣子的:

其中有很多以no作為前綴的class,當然大部分都沒有這個前綴。事實上,如果一個類名以no作為前綴,比如?no-touch?這表示瀏覽器不支持touch特性,這也是最新版本的Chrome不支持的兩個feature之一:

Modernizr有一個?test頁面?,可以檢測當前瀏覽器支持的特性。Chrome目前是對HTML5和CSS3新特性支持最好的瀏覽器,沒有之一。

言歸正傳。當我們引入了Modernizr.js類庫后,?<html>?標簽的class屬性就會被相應的賦值,以顯示瀏覽器是否支持某類CSS屬性。比如在IE6下面,不支持boderradius特性,那么在?<html>?標簽中就會出現?no-borderradius?類,我們可以做一些fallback的工作:

.no-borradius div{/*-- do some hacks here --*/ }

Browser Feature Test

檢測瀏覽器是否支持某項特性,我們可以用這種語法:

Modernizr.featuretodetect

Modernizr對象是類庫創建的全局變量,我們可以在頁面的任意位置使用。比如我們需要檢測瀏覽器是否支持WebGL,可以這么做:

if(Modernizr.webgl){/* support WebGL */ } else{/* not support WebGL */ }

Modernizr.load()

基于?YepNope.js?,Modernizr.load()根據一些條件判斷來動態選擇加載CSS和JavaScript,這無疑對避免不必要的資源加載有極大的幫助。

你可以在這里(?HTML5 Cross Browser Polyfills?)找到幾乎所有新特性的fallback解決方案。

Modernizr.load(test: Modernizr.webgl,yep : 'three.js',nope: 'jebgl.js' );

當瀏覽器支持WebGL的時候,就引入?three.js?這個類庫做一些3D效果。瀏覽器不支持WebGL的時候可以使用?jebgl.js?做一些fallback操作。

還有一個比較酷的例子來自官方文檔。我們在用jQuery類庫的時候,通常都是這種寫法:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js">\x3C/script>')</script>

現在用Modernizr.load()可以這么寫:

Modernizr.load([{load: '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js',complete: function () {if ( !window.jQuery ) {Modernizr.load('js/libs/jquery-1.7.1.min.js'); } } }, { // This will wait for the fallback to load and // execute if it needs to. load: 'needs-jQuery.js' } ]);

Summary

Modernizr為我們做了最復雜的一步,我們只需要像模塊一樣將代碼組裝起來。當然,Modernizr還有一些其他的用法,比如Modernizr.mq()方法用來檢測media query,這對Responsive Design可以幫上很多忙。諸如這些API在官方文檔中都有涉及,建議在使用的時候仔細了解一下即可。

轉載于:https://www.cnblogs.com/zr123/p/8743506.html

總結

以上是生活随笔為你收集整理的modernizr.js的介绍和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。