Modernizr

Modernizr is a small JavaScript Library that detects whether a particular feature of web technologies is available or not in the user’s browser. It provides an easy way to detect any new feature so that we can take corresponding action based on the browser’s capabilities. For example, if a browser does not support a video feature then we can display a simple message regarding the same. We can also create CSS rules based on the feature availability and these rules would be applied automatically on the webpage if the browser does not support a new feature.

Before we start using Modernizr, we are required to include its javascript library in our HTML page header as follows −

<script src="modernizr.min.js" type="text/javascript"></script>

Instance

Following is the simple syntax to handle supported and non supported features −

<!-- In your CSS: -->
.no-audio #music {
   display: none; <!-- to not show Audio options -->
}
.audio #music button {
  <!-- Style the Play and Pause buttons nicely -->
}

<!-- In your HTML: --><div id="music"><audio><source src="audio.ogg" /><source src="audio.mp3" /></audio><button id="play">Play</button><button id="pause">Pause</button></div>

Here it is notable that you need to prefix “no-” to every feature/property you want to handle for the browser which does not support them.

Following code snippet can be added to detect a particular feature through Javascript −

if (Modernizr.audio) {
   <!-- properties for browsers that
   support audio -->
}

else{
   <!-- properties for browsers that
   does not support audio -->
}

Features detected by Modernizr

Following is the list of features which can be detected by Modernizr −

FeatureCSS PropertyJavaScript Check
@font-face.fontfaceModernizr.fontface
Canvas.canvasModernizr.canvas
Canvas Text.canvastextModernizr.canvastext
HTML Audio.audioModernizr.audio
HTML Audio formatsNAModernizr.audio[format]
HTML Video.videoModernizr.video
HTML Video FormatsNAModernizr.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 Animations.cssanimationsModernizr.cssanimations
CSS Columns.csscolumnsModernizr.csscolumns
CSS Gradients.cssgradientsModernizr.cssgradients
CSS Reflections.cssreflectionsModernizr.cssreflections
CSS 2D Transforms.csstransformsModernizr.csstransforms
CSS 3D Transforms.csstransforms3dModernizr.csstransforms3d
CSS Transitions.csstransitionsModernizr.csstransitions
Geolocation API.geolocationModernizr.geolocation
Input TypesNAModernizr.inputtypes[type]
Input AttributesNAModernizr.input[attribute]
localStorage.localstorageModernizr.localstorage
sessionStorage.sessionstorageModernizr.sessionstorage
Web Workers.webworkersModernizr.webworkers
applicationCache.applicationcacheModernizr.applicationcache
SVG.svgModernizr.svg
SVG Clip Paths.svgclippathsModernizr.svgclippaths
SMIL.smilModernizr.smil
Web SQL Database.websqldatabaseModernizr.websqldatabase
IndexedDB.indexeddbModernizr.indexeddb
Web Sockets.websocketsModernizr.websockets
Hashchange Event.hashchangeModernizr.hashchange
History Management.historymanagementModernizr.historymanagement
Drag and Drop.draganddropModernizr.draganddrop
Cross-window Messaging.crosswindowmessagingModernizr.crosswindowmessaging
addTest() Plugin APINAModernizr.addTest(str,fn)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *