Modernizr・・・ブラウザの機能の実装状況を調査

Modernizrはブラウザの機能の実装状況を調べるためのjsライブラリ(プラグイン)です(jqueryライブラリは特に必要ありません)。

ブラウザ判定については、すでに述べた通りなのですが、userAgentで判定するのにいろいろ限界があったり、コードが複雑になったり・・・
なにしろマイクロソフトったらuserAgentの中身に統一性をなくしちゃいますからね・・・

そこで、ブラウザを判定するのではなくて、そのブラウザで目的の機能(たとえばCSS3のborder-radiusプロパティであるとかHTML5のcanvasタグであるとか)が使えるか使えないかで判断しましょうというのが、Modernizrです。
スマートデバイスも視野に入れると、こっちの方が合理的といえば合理的かもです。

HTML5・CSS3ではブラウザ判定よりModernizrを推奨します。
Modernizrはhtml5のタグやcss3のプロパティ名で判定できるからです。


Modernizrの使い方

詳しくは、ネットに落ちている記事やgoogle先生にお任せしますが、簡単に・・・。

導入方法

ModernizrからDevelopmentバージョンをダウンロードして、適切なディレクトリに格納してください。
そして、headタグ内でファイルを読み込みます。

ダウンロードページで必要な機能を構成したスクリプトをダウンロードすることも可能です。
実際に公開するページでは、ファイルの軽量化を鑑みて、必要な機能だけを組み合わせるようにしましょう。
(ver.3をリリースするにあたって、Modernizrのwebサイトのデザインが変わったようですが、基本的な使い方は変わっていないようなので問題ないと思います。)

  • modernizr-x.x.x.js・・・Developmentバージョン(xは整数でバージョン)
  • modernizr.custom.xxxxx.js・・・ダウンロードページでカスタマイズしたもの(xは整数で何らかのコード。ファイル名は変更しても良い)

読み込むのはどちらかのファイルでよいです。

<script src="modernizr-2.5.3.js"></script>

html5を想定してのソースなので、type属性を省略しています。


sample

radius

サンプルではborder-radius(CSS3)対応の場合、青紫色の角丸枠が表示されます。
未対応のブラウザ(例えばIE6~8)の場合、角が丸くない赤い枠の矩形が表示されます。


サンプルの解説

<p class="test_radius">テキスト</p>

htmlソースはこの限りではありません。あくまでもサンプルのソースです。

.test_radius,
.test_noradius{
    border:solid 3px #bbf;
    border-radius:10px;
    width:100px;
    text-align:center;
    line-height:1;
    padding:44px 0;
}
.test_noradius{
    border:solid 3px #fbb;
}

目的の機能が対応している場合(class[test_radius])とそうでない場合(class[test_noradius])のcssを記述しておきます(border-radius未対応の場合、四角く表示されるだけなので、あえてborder-radiusを解除していません)。
もちろん、必ずcssで回避策を設定しておかなければならないわけではなく、ここではあくまでも例としてこのようにしています(class/id名もこれといって規定はありません・・・一般的な名づけルールに則ってください)。

if (Modernizr.borderradius){
   //border-radius対応の場合の処理
} else {
   //border-radius未対応の場合の処理
}

if文で対応かどうか判定します。
[Modernizr]と確認したい機能を[.](ドット)でつなぎます。ここではModernizr.borderradiusとなります。

$(function(){
    if (Modernizr.borderradius){
         //border-radius対応の場合の処理・・・何もしない
    } else {
         //border-radius未対応の場合の処理・・・classを差し替える
         $(".board_smp p").removeClass("test_radius").addClass("test_noradius");
    }
})

ここでは、jqueryを使ってclass名を差し替える処理をしました。


おまけのサンプル

HTML5の機能を確認することもできます。
下のボタンをクリックするとアラートが表示されます。


戻る

Top