Dev Depo: Modernizr, Finding a Perfect Fit

Stephen Yagielowicz

Taking advantage of cool new web technologies is great fun, until you have to support browsers that lag behind, says the publisher of Modernizr (, a JavaScript library that detects HTML5 and CSS3 features in a website user’s browser.

Modernizr allows users to efficiently deploy conditional JavaScript and CSS coding that maximizes capabilities and compatibility across all platforms — whether a browser supports a specific feature or not. It’s perfect for doing progressive enhancement easily.

Modernizr allows users to efficiently deploy conditional JavaScript and CSS coding that maximizes capabilities and compatibility across all platforms.

According to its creators, Modernizr runs instantly when a web page loads in order to detect the features supported by the accessing platform such as a desktop computer, tablet or other device; and then creates a custom JavaScript object based upon the test results — with dozens of tests supported — adding classes to the HTML element that allow users to modify them with additional CSS coding.

Now in version 2.6.2, Modernizr is a lightweight 42 Kb download in its commented, uncompressed development version; allowing users to learn from the tool as they develop their sites with it. Once the desired settings are attained, the production build toolkit lets users choose only the tests they need, streamlining file size (and load time) even further.

Modernizr supports (and optionally includes) YepNope.js for conditional loading of external .js and .css resources — a big benefit when targeting the latest browser features.

A variety of documentation is available, including a guide to getting started, as well as hints on using Modernizr with HTML5 and CSS3, plus optimal methods for front-end development, a guide to cross-browser polyfills and more, in a robust resources section.

For the uninitiated, a polyfill is a JavaScript shim replicating standard APIs on older browsers, allowing developers to use the real API, while loading compatibility polyfills on browsers that do not support a particular API or feature. Polyfills are available for most detectable HTML5 and CSS3 features, allowing their use to be replicated in non-supportive browsers — so as the company notes, “not only can you use HTML5 today, but you can use it in the past, too!”

Modernizr provides an alternative to the traditional but unreliable user-agent sniffing methods previously used to discriminate coding based on browser capabilities, detecting more than 40 next-generation features in a matter of milliseconds. As powerful as it is, however, it is important to remember that while Modernizr gives users enhanced control through JavaScript-driven feature detection processes, continuing to utilize best practices throughout the website development process remains vital.

“Use progressive enhancement wherever you can and don’t sacrifice accessibility for convenience or performance,” a Modernizr spokesperson notes. “With the 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 an easy and reliable means of controlling the situation for the browsers that cannot.”

Modernizr brings a range of tools to developers while facilitating conditional coding. Give it a try and see if it helps your site gain a competitive, backwards-compatible edge.