modernizr

HTML5Shiv允許就瀏覽器識別出HTML5元素,並可以爲其添加樣式—-它只是簡單地創建了HTML5對象,讓CSS和JavaScript可以應用在元素本身。Modernizr做了同樣的事情,並且在此基礎上還添加了特性檢測。它會告訴你特徵存在與否,該怎麼處理還是開發者自己決定的。

HTML5Shiv會使像<video>這樣的標籤生效,但是它並不會使HTML5的視頻在就瀏覽器得以播放。雖然這個標籤是可用的,並能夠添加樣式,然而視頻並不能在這些瀏覽器裏播放。Modernizr不僅能夠讓video標籤可用,並且能夠爲不支持該特性的瀏覽器提供備選方案。在視頻例子中,你能夠用Modernizr在不支持視頻的瀏覽中降級爲使用Flash去播放視頻。(直接提醒用戶升級瀏覽器吧。。。)

<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="modernizr-2.8.3.min.js"></script>
</head>
<body>
  <span class="span-svg">support</span>
  <span class="span-no-svg">not support</span>

  <script>
    if(Modernizr.svg) {
      alert(1)
    } else {
      alert(2);
    }
  </script>
</body>
</h

在head標籤中添加modernzr的script,並且在html標籤上添加類 “no-js”。在瀏覽器打開,可以發現,html標籤上添加了很多類。如果瀏覽器支持該特性(比如svg),就會在html標籤添加類svg;如果不支持svg,就會添加類no-svg。其他特性也是如此。所以我們就可以根據不同的類定製樣式。

.svg span {display: none;}
.svg .span-svg {display: inline;}
.no-svg .span-no-svg {display: inline}

此外,可以在腳本中檢測modernizr支持的特性,以便動態生成頁面。腳本中生成了一個全局變量Modernizr。如果支持該特性,返回值是true;不支持時返回值是false。

if(Modernizr.svg) {

} else {}

另外一個有用的特性是Modernizr.load和yepnope,後者是一個資源加載器,默認集成在modernizr中。

<script>
  Modernizr.load({
    test: Modernizr.svg,
    yep: 'svg.css', //支持該特性,加載資源
    nope: 'no-svg.css' //不支持該特性,加載資源 
  })
  // 測試多個的寫法
  Modernizr.load([
    {
      test: Modernizr.svg,
      yep: ['svg.css', 'svg.js'], 
      nope: 'no-svg.css'
    },
    {
      test: Modernizr.opacity,
      yep: ['opacity.css', 'opacity.js'],
      nope: 'no-opacity.js'
    }
  ])
</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章