JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

ModernizrでHTML5・CSS3の機能対応を検出する方法

Modernizrとは

Modernizrは、次世代のWeb技術がブラウザにネイティブ実装されているかどうかを検出するための軽量JavaScriptライブラリです。HTML5やCSS3の新しい機能を使う際に「このブラウザは対応しているのか?」を自動的に判別できるため、未対応ブラウザ向けのフォールバック処理やプログレッシブエンハンスメントの実装に広く活用されています。

Modernizrを読み込むと、検出結果に応じて<html>要素へ自動的にクラス名(例:.canvas、.no-canvas)が付与されるとともに、JavaScriptからはModernizrオブジェクトの各プロパティ(true/false)を参照して判定できます。

Modernizrで検出できる機能一覧

下記の表は、Modernizrで検出可能な機能と、それに対応するCSSクラス名、JavaScriptでの確認方法をまとめたものです。

機能CSSプロパティ(クラス名)JavaScript判定
@font-face.fontfaceModernizr.fontface
Canvas.canvasModernizr.canvas
Canvasテキスト.canvastextModernizr.canvastext
HTML5 Audio.audioModernizr.audio
HTML5 AudioフォーマットなしModernizr.audio[format]
HTML5 Video.videoModernizr.video
HTML5 VideoフォーマットなしModernizr.video[format]
rgba().rgbaModernizr.rgba
hsla().hslaModernizr.hsla
border-image.borderimageModernizr.borderimage
border-radius.borderradiusModernizr.borderradius
box-shadow.boxshadowModernizr.boxshadow
複数背景(Multiple backgrounds).multiplebgsModernizr.multiplebgs
Opacity(透明度).opacityModernizr.opacity
CSSアニメーション.cssanimationsModernizr.cssanimations
CSSカラムレイアウト.csscolumnsModernizr.csscolumns
CSSグラデーション.cssgradientsModernizr.cssgradients
CSS反射効果.cssreflectionsModernizr.cssreflections
CSS 2Dトランスフォーム.csstransformsModernizr.csstransforms
CSS 3Dトランスフォーム.csstransforms3dModernizr.csstransforms3d
CSSトランジション.csstransitionsModernizr.csstransitions
Geolocation API.geolocationModernizr.geolocation
入力タイプ(Input Types)なしModernizr.inputtypes[type]
入力属性(Input Attributes)なしModernizr.input[attribute]
localStorage.localstorageModernizr.localstorage
sessionStorage.sessionstorageModernizr.sessionstorage
Web Workers.webworkersModernizr.webworkers
applicationCache.applicationcacheModernizr.applicationcache
SVG.svgModernizr.svg
SVGクリップパス.svgclippathsModernizr.svgclippaths
SMIL.smilModernizr.smil
Web SQL Database.websqldatabaseModernizr.websqldatabase
IndexedDB.indexeddbModernizr.indexeddb
WebSocket.websocketsModernizr.websockets
hashchangeイベント.hashchangeModernizr.hashchange
History管理.historymanagementModernizr.historymanagement
ドラッグ&ドロップ.draganddropModernizr.draganddrop
クロスウィンドウメッセージング.crosswindowmessagingModernizr.crosswindowmessaging
addTest()プラグインAPIなしModernizr.addTest(str, fn)

JavaScriptでの基本的な判定例

例として、Canvasへの対応状況を判定するコードは次のようになります。

if (Modernizr.canvas) {
  // Canvasが使用可能な場合の処理
} else {
  // 未対応ブラウザ向けのフォールバック処理
}

また、CSS側では自動付与されたクラスを利用してスタイルを切り替えられます。

.no-boxshadow .box {
  /* box-shadow非対応時の代替スタイル */
}

まとめ

Modernizrを活用すれば、ブラウザごとのHTML5・CSS3対応状況を手動で調べることなく、最新のWeb技術を安全に取り入れることができます。機能検出による条件分岐を適切に行い、すべてのユーザーにとって快適なWeb体験を提供しましょう。

  1. RGBAを使ったCSSの透明度設定方法をわかりやすく解説

    CSSで要素の透明度を表現する場合、rgba() 関数を使うのが一般的です。RGBにアルファチャンネル(alpha)を加えたこのカラーモデルでは、第4パラメータで色の不透明度(opacity)を細かく指定できます。 RGBAカラーの基本 rgba() は次の4つの値で構成されます。 R(赤)・G(緑)・B(青):それぞれ0〜255、または0〜100%の数値で指定します。 A(アルファ/透明度):0.0(完全な透明)〜1.0(完全な不透明)までの小数で指定します。例えば「0.5」なら半透明になります。 通常の rgb() では透明度を扱えませんが、rgba() を使えば背景色だけを半透明にで

  2. CSSのdata-*属性(カスタムデータ属性)の使い方を実例付きで解説

    HTMLのdata-*属性(カスタムデータ属性)を使うと、要素に独自の追加情報を持たせることができます。この記事では、CSSやJavaScriptと組み合わせてdata-*属性を活用する方法を、具体的なコード例とともにわかりやすく解説します。 data-*属性とは? data-*属性は、「data-」で始まる任意の名前を付けられるHTMLの標準属性です。例えば data-food-type=beverages のように記述することで、表示には影響を与えずに要素へメタ情報を埋め込めます。JavaScriptからは getAttribute() や dataset プロパティで、CSSからは属性セ