[!NOTE] Nota de web moderna: Modernizr fue esencial en la transición a HTML5 y CSS3. El desarrollo moderno suele usar
@supportsen CSS y comprobaciones directas ('fetch' in window) en JavaScript.
Modernizr detecta la disponibilidad de funciones modernas de HTML5 y CSS3 en el navegador del usuario, reemplazando el frágil análisis del user-agent por detección de características.
Cómo funciona Modernizr
Al cargarse, Modernizr ejecuta pruebas de compatibilidad y:
- Añade clases como
.flexboxo.no-flexboxal elemento raíz<html>. - Expone un objeto global
Modernizren JavaScript con propiedades booleanas de prueba.
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
Estilos condicionales en CSS
Apunta directamente en las hojas de estilos a navegadores compatibles e incompatibles:
/* Fallback layout for older browsers */
.no-flexbox .container {
display: block;
float: left;
}
/* Modern flexbox layout */
.flexbox .container {
display: flex;
justify-content: space-between;
}
Detección de características en JavaScript
if (Modernizr.geolocation) {
navigator.geolocation.getCurrentPosition(showMap);
} else {
showAddressInputFallback();
}
if (Modernizr.localstorage) {
localStorage.setItem('theme', 'dark');
}
if (Modernizr.webgl) {
initialize3DCanvas();
}
Características comunes detectables
Características CSS
flexbox,cssgridopacity,rgba,hslaboxshadow,textshadow,borderradiuscssanimations,csstransforms,csstransforms3d,csstransitionsbackgroundsize,borderimage,fontface
HTML5 y APIs de almacenamiento
canvas,canvastext,webgllocalstorage,sessionstorage,indexeddbgeolocation,history,websockets,webworkersvideo,audio,svg,inlinesvg