Modernizrはブラウザの機能の実装状況を調べるためのjsライブラリ(プラグイン)です(jqueryライブラリは特に必要ありません)。
ブラウザ判定については、すでに述べた通りなのですが、userAgentで判定するのにいろいろ限界があったり、コードが複雑になったり・・・
なにしろマイクロソフトったらuserAgentの中身に統一性をなくしちゃいますからね・・・
そこで、ブラウザを判定するのではなくて、そのブラウザで目的の機能(たとえばCSS3のborder-radiusプロパティであるとかHTML5のcanvasタグであるとか)が使えるか使えないかで判断しましょうというのが、Modernizrです。
スマートデバイスも視野に入れると、こっちの方が合理的といえば合理的かもです。
HTML5・CSS3ではブラウザ判定よりModernizrを推奨します。
Modernizrはhtml5のタグやcss3のプロパティ名で判定できるからです。
詳しくは、ネットに落ちている記事やgoogle先生にお任せしますが、簡単に・・・。
ModernizrからDevelopmentバージョンをダウンロードして、適切なディレクトリに格納してください。
そして、headタグ内でファイルを読み込みます。
ダウンロードページで必要な機能を構成したスクリプトをダウンロードすることも可能です。
実際に公開するページでは、ファイルの軽量化を鑑みて、必要な機能だけを組み合わせるようにしましょう。
(ver.3をリリースするにあたって、Modernizrのwebサイトのデザインが変わったようですが、基本的な使い方は変わっていないようなので問題ないと思います。)
読み込むのはどちらかのファイルでよいです。
<script src="modernizr-2.5.3.js"></script>
html5を想定してのソースなので、type属性を省略しています。
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の機能を確認することもできます。
下のボタンをクリックするとアラートが表示されます。