canvas notes
canvas noise
by J. Albert Bowden
HTML
<div class="viewport">
<div class="panel">
<a href="http://matthamm.com/box-shadow-curl.html">http://matthamm.com/box-shadow-curl.html</a>
<a href="http://net.tutsplus.com/tutorials/javascript-ajax/how-to-generate-noise-with-canvas/">http://net.tutsplus.com/tutorials/javascript-ajax/how-to-generate-noise-with-canvas/</a>
</div>
</div>
CSS
.viewport {
width: 100%;
height: 100%;
xbackground-color: tan;
font-family: verdana, sans-serif;
font-size: .7em;
}
.panel {
margin: 0 30px 30px 0;
width: 300px;
height: 200px;
border: 1px solid #EFEFEF;
position: relative;
background: #FFF;
padding: 4px;
}
.panel:after {
z-index: -1;
position: absolute;
background: transparent;
width: 70%;
height: 55%;
content: '';
right: 10px;
bottom: 10px;
transform: skew(15deg) rotate(6deg);
-webkit-transform: skew(15deg) rotate(6deg);
-moz-transform: skew(15deg) rotate(6deg);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
}
.panel:before {
z-index: -2;
position: absolute;
background: transparent;
width: 70%;
height: 55%;
content: '';
left: 10px;
bottom: 10px;
transform: skew(-15deg) rotate(-6deg);
-webkit-transform: skew(-15deg) rotate(-6deg);
-moz-transform: skew(-15deg) rotate(-6deg);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); }
.panel a {
border: 1px solid #dedede;
display: block;
padding: 2px;
margin: 8px;
}
JavaScript
function generateNoise(opacity) {
if ( !! !document.createElement('canvas').getContext) {
return false;
}
var canvas = document.createElement("canvas"),
ctx = canvas.getContext('2d'),
x, y, number, opacity = opacity || .2;
canvas.width = 45;
canvas.height = 45;
for (x = 0; x < canvas.width; x++) {
for (y = 0; y < canvas.height; y++) {
number = Math.floor(Math.random() * 60);
ctx.fillStyle = "rgba(" + number + "," + number + "," + number + "," + opacity + ")";
ctx.fillRect(x, y, 1, 1);
}
}
document.body.style.backgroundImage = "url(" + canvas.toDataURL("image/png") + ")";
}
generateNoise(.3); // default opacity is .2