IT:AD:JScript:Libs:Modernizr
Basics
- Good summary
- Add script in head, before page loads:
`<script src="modernizr-1.7.js type="text/javascript"></script>`
- Add
class="no-js"to html tag. - It will add class values to the HTML tag:
<html class="js canvas canvastext no-geolocation rgba hsla multiplebgs borderimage borderradius boxshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions video audio localstorage sessionstorage webworkers applicationcache fontface">`
- If a feature is missing, the class name will have
no-prepended. - List of classes can be found at modernizr docs
<html class="js
- Will also create a JS object called
Modernizrthat has same values, as booleans, but more in depth:
Modernizr.video.h264
- Does not provide emulation of these features.
- What's interesting about the above classes is that one can now develop style sheets that only come into effect if the above styles are available.
By CSS:
//original
#content { border:2px outset #666;}
//when border radius is supported:
.borderadius #content {
border: 1px solid #141414;
-webkit-border-radius:12px;
-mox-border-radius:12px;
border-radius:12px;
}
//target browsers supporting boxshadow:
.boxshadow #content {
border:none;
-webkit-box-shadow:rgba(0,0,0.5) 3px 3px 6px;
-moz-box-shadow:rgba(0,0,0.5) 3px 3px 6px;
box-shadow:rgba(0,0,0.5) 3px 3px 6px;
}
Again by CSS:
//Original
h1 {font:27px/27px Baskervill, Palatino, "Palatino Linotype" }
@font-face {
src:url(Beautiful-ES.ttf);
font-family:"Beautiful";
text-shadow: #aaa 5px 5px 5px;
}
//Targeting browsers that understand fontface
.fontface h1 {
font:42px/50px Beautiful;
text-shadow:nonw;
}
By code:
// check for canvas
if (Modernizr.canvas) {
// We have canvas so add a rectangle
var demospace = document.getElementById('demo-space');
var context = demospace.getContext('2d');
context.fillStyle = "rgb(255,0,0)";
context.fillRect(10, 10, 10, 10)
} else {
// No canvas. Remove the layout space to preserve the layout.
var ul = document.getElementById('content');
var li = document.getElementById('demo-space-wrapper');
ul.removeChild(li);
};