html, body { height: 100%; padding: 0; margin: 0 }

div {
    width:50%;
    height:100%;
    float:left;
    background:slategray;
}
var prefix = (function(){
    var prefixes = ['', 'moz', 'webkit', 'o', 'ms'],
        grad = 'radial-gradient(white,black)',
        style = document.createElement('div').style;
    
    for(var i=0; i<prefixes.length; i++) {
        var prefix = prefixes[i]? '-' + prefixes[i] + '-' : '';

        style.backgroundImage = prefix + grad;
        
        if(style.backgroundImage) {
            return prefix;
        }
    }
    
    return false;
})();

function $(id) { return document.getElementById(id); }


$('svg').onmousemove = $('grad').onmousemove = function(evt) {
    var x = Math.round(100 * evt.clientX/innerWidth),
       y = Math.round(100 * evt.clientY/innerHeight);
        
    this.style.backgroundImage = this.id === 'svg'? 
            'url(\'data:image/svg+xml,<%3Fxml%20version%3D"1.0"%20encoding%3D"UTF-8"%3F>%0A<svg%20version%3D"1.1"%20xmlns%3D"http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg">%0A%09<defs>%0A%20%20%20%20%20%20%20%20<radialGradient%20id%3D"gradient"%20cx%3D"' + x + '%25"%20cy%3D"' + y + '%25">%0A%20%20%20%20%20%20%20%20%20%20%20%20<stop%20stop-opacity%3D"0"%20%2F>%0A%20%20%20%20%20%20%20%20%20%20%20%20<stop%20offset%3D"100%25"%20%2F>%0A%20%20%20%20%20%20%20%20<%2FradialGradient>%0A%20%20%20%20<%2Fdefs>%0A%20%20%20%20<rect%20width%3D"180%25"%20height%3D"180%25"%20fill%3D"url(%23gradient)"><%2Frect>%0A<%2Fsvg>\')'
        :
            prefix + 'radial-gradient(' + x + '% ' + y + '%, transparent, black 90%)';
};