Modernizr - JavaScript library to build HTML5 and CSS3 sites

Modernizr is a small JavaScript library that detects the availability of native implementations for next-generation web technologies, i.e. features that stem from the HTML5 and CSS3 specifications. Many of these features are already implemented in at least one major browser (most of them in two or more), and what Modernizr does is, very simply, tell you whether the current browser has this feature natively implemented or not.
Unlike with the traditional—but highly unreliable—method of doing “UA sniffing,” which is detecting a browser by its (user-configurable) navigator.userAgent property, Modernizr does actual feature detection to reliably discern what the various browsers can and cannot do. After all, the same rendering engine may not necessarily support the same things, and some users change their userAgent string to get around poorly developed websites that don’t let them through otherwise.
Modernizr aims to bring an end to the UA sniffing practice. Using feature detection is a more reliable mechanic to establish what you can and cannot do in the current browser, and Modernizr makes it convenient for you in a variety of ways:
- It tests for over 40 next-generation features, all in a matter of milliseconds
- It creates a JavaScript object (named
Modernizr) that contains the results of these tests as boolean properties - It adds classes to the
htmlelement that explain precisely what features are and are not natively supported - It provides a script loader so you can pull in polyfills to backfill functionality in old browsers
With this knowledge that Modernizr gives you, you can take advantage of these new features in the browsers that can render or utilize them, and still have easy and reliable means of controlling the situation for the browsers that cannot.
- Tutorials
- Mozilla Web Developer Toolbox: Modernizr
— Jeremie Patonnier - Taking Advantage of HTML5 and CSS3 with Modernizr
— Faruk Ateş - How to use Modernizr
— Inayaili de León - Modernizr: front-end development done right
— Ryan Seddon - Using Modernizr Prefixed
— Andi Smith -
- Official resources
- Github repository
- Extra Feature Detection tests
- Modernizr logos
- Documentation: Getting started
- The Undetectables: features that cannot be detected
- Cross-browser Polyfills
Documentation