[!NOTE] Nota da Web moderna: O Modernizr foi essencial na transição para HTML5 e CSS3. Hoje o desenvolvimento costuma usar
@supportsno CSS e verificações diretas ('fetch' in window) em JavaScript.
Modernizr detecta a disponibilidade de recursos HTML5 e CSS3 no navegador do usuário, substituindo o frágil user-agent sniffing pela detecção de recursos.
Como o Modernizr funciona
Ao ser carregado, o Modernizr executa testes de recursos e:
- Adiciona classes como
.flexboxou.no-flexboxao elemento raiz<html>. - Expõe um objeto JavaScript global
Modernizrcom propriedades booleanas de teste.
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
Estilização condicional em CSS
Direcione navegadores com ou sem suporte diretamente nas folhas de estilo:
/* Fallback layout for older browsers */
.no-flexbox .container {
display: block;
float: left;
}
/* Modern flexbox layout */
.flexbox .container {
display: flex;
justify-content: space-between;
}
Detecção de recursos em JavaScript
if (Modernizr.geolocation) {
navigator.geolocation.getCurrentPosition(showMap);
} else {
showAddressInputFallback();
}
if (Modernizr.localstorage) {
localStorage.setItem('theme', 'dark');
}
if (Modernizr.webgl) {
initialize3DCanvas();
}
Recursos comuns detectáveis
Recursos CSS
flexbox,cssgridopacity,rgba,hslaboxshadow,textshadow,borderradiuscssanimations,csstransforms,csstransforms3d,csstransitionsbackgroundsize,borderimage,fontface
APIs HTML5 e armazenamento
canvas,canvastext,webgllocalstorage,sessionstorage,indexeddbgeolocation,history,websockets,webworkersvideo,audio,svg,inlinesvg