Reputation: 271
Is there a way I can make an HTML5 canvas the background of a web page I am making and place all the elements on top of it.
So it acts like the <body>
?
I tried doing this with z-index and positioning the elements on top, but then they were click-able or focus-able. I need them to still be functioning, but the canvas to also be clickable just in the background and not clickable where there are elements over it.
Upvotes: 9
Views: 7020
Reputation: 94309
Just set the <canvas>
's z-index
to -1
. If your canvas is covered by containers on top, simulate custom events using createEvent
.[1]
Demo: http://jsfiddle.net/DerekL/uw5XU/
var canvas = $("canvas"), //jQuery selector, similar to querySelectorAll()
//...
function simulate(e) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("mousemove", true, true, window,
0, e.screenX, e.screenY, e.clientX, e.clientY, false, false, false, false, 0, null);
canvas[0].dispatchEvent(evt);
}
$("body > *").each(function () {
this.addEventListener("mousemove", simulate);
});
Upvotes: 9
Reputation: 4503
Sure that would be possible with z-index
, most probably the canvas will not be clickable because you're working with a container that's on top of it. So even if there appears to be no element the container is still there which prevents you from clicking on the canvas.
Upvotes: 0