様々なブラウザ環境に対応する為のJavaScriptライブラリ「Modernizr」

Check このエントリーをはてなブックマークに追加

配布元:Modernizr
ライセンス:MIT & BSD licenses.

ModernizrはTwitterなどの大手サイトでも採用されているブラウザの機能の実装状況を調査するためのJavaScriptライブラリです。

たとえばModernizrを読み込んだサイトではhtml要素が次のように書き換えられます。

<html lang="ja" class="no-js">

 ↓

<html lang="ja" class="js flexbox flexbox-legacy rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent">

CSS3などの対応状況をHTML要素のclass属性に入れてくれるので次のようにCSS3に対応しているブラウザと対応していないブラウザで表示を切り替えることが可能です。

.box {
   border-bottom: 1px solid #666;
   border-right: 1px solid #777;
}
.boxshadow div.box {
   border: none;
   -webkit-box-shadow: #666 1px 1px 1px;
      -moz-box-shadow: #666 1px 1px 1px;
               box-shadow: #666 1px 1px 1px;
}

サンプル

Modernizrの利用方法

最初に利用する場合はDevelopmentバージョンをダウンロードしてページ内に読み込みます。

Production バージョンでは利用する機能を絞り込み圧縮したバージョンが作成できますので、サイトを公開する際には、利用した機能のみを絞り込んだバージョンに差し替えると良いでしょう。

JavaScript ON / OFFの判定

html要素にあらかじめclass属性「no-js」を指定しておくとModernizrはhtml要素にclass属性「no-js」を「js」に変更します。これによりJavaScript のON / OFFにより適応できるスタイルが変化します。

.no-js #div{
   /*JavaScript OFF 時の記述*/
}
.js #div{
   /*JavaScript ON 時の記述*/
}

判定できるCSS3機能

次のようなCSS3を判定して、対応してる場合はclass属性を対応しない場合は「no-fontface」といった具合にno-という接頭辞がついたclass属性が付加されます。

.rgba #div{
   /*rgba が利用できる際の記述*/
   color:rgba(0,0,0,0.5);
}
.no-rgba #div{
   /*rgba が利用できない時の記述*/
   color:#666666;
}
判定する機能 付加されるclass属性
@font-face fontface
background-size backgroundsize
border-image borderimage
border-radius borderradius
box-shadow boxshadow
Flexible Box Model (flexbox) flexbox
Flexbox Legacy flexbox-legacy
hsla() hsla
multiple backgrounds multiplebgs
opacity opacity
rgba() rgba
text-shadow textshadow
CSS Animations cssanimations
CSS Columns csscolumns
SS Generated Content(:before/:after) generatedcontent
CSS Gradients cssgradients
CSS Reflections cssreflections
CSS 2D Transforms csstransforms
CSS 3D Transforms csstransforms3d
CSS Transitions csstransitions

判定できるHTML5機能

HTML5に関しても機能の判定が可能です。

applicationCache applicationcache
Canvas canvas
Canvas Text canvastext
Drag and Drop draganddrop
hashchange Event hashchange
History Management history
HTML5 Audio audio
HTML5 Video video
ndexedDB indexeddb
input属性 autocomplete, autofocus, list, placeholder, max, min, multiple, pattern, required, step

localStorage localstorage
Cross-window Messaging postmessage
sessionStorage sessionstorage
Web Sockets websockets
Web SQL Database websqldatabase
Web Workers webworkers
Geolocation API geolocation
Inline SVG inlinesvg
SMIL smil
SVG svg
SVG Clip paths svgclippaths

Modernizrではclass属性を追加するだけでなく、Modernizrオブジェクトに各機能が利用できるかのフラグがプロパティに格納されますのでJavaScriptを利用する場合にも利用が可能です。

if (Modernizr.svg){
   alert("SVG対応")
} else {
   alert("SVG未対応")
}

Modernizr.audioは更に「ogg」「 mp3」「wav」「and」「m4a」のプロパティをもち、対応可能なファイル形式も判定できます。

次のように各ファイルを用意しておき利用できるファイルを判定して利用します。

var audio = new Audio();
audio.src = Modernizr.audio.ogg ? 'background.ogg' :
            Modernizr.audio.mp3 ? 'background.mp3' :
                                  'background.m4a';
audio.play();

その他の機能

他にも様々な機能が確認できます。

Touch Events touch
WebGL webgl

スポンサードリンク

コメント

カテゴリー:CSS3 HTML5 iPad ライブラリ 製作補助系