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