Using Canvas

drawing canvas

When you create a WebGLRenderer, Three.js automatically generates a canvas> element for you. You don't usually need to think about it — it just works.

const renderer = new THREE.WebGLRenderer();
document.body.appendChild(renderer.domElement);
// renderer.domElement is a canvas> — Three.js made it for you

But sometimes you want more control — maybe you want to style the canvas yourself, share it with 2D drawing, or place it in a specific spot on the page. In that case, you can create your own canvas and pass it to the renderer.

using your own canvas

<canvas id="myCanvas"></canvas>
const canvas = document.getElementById('myCanvas');
const renderer = new THREE.WebGLRenderer({ canvas });

Now Three.js will render into your canvas instead of making its own. You can style it with CSS however you want — position it, resize it, give it borders — and Three.js won't interfere.

making the canvas transparent

By default, the canvas has a solid background (usually black). If you want your 3D scene to sit on top of other page content, you need to make the canvas transparent:

const renderer = new THREE.WebGLRenderer({
    canvas,
    alpha: true, // transparent background
});

Then in your CSS you can put page content behind the canvas, or let a background image show through.

when to use a custom canvas

Situation Default canvas Custom canvas
Quick test or prototype ✅ Yes
Need precise CSS control ✅ Yes
Mixing 2D canvas drawing with 3D ✅ Yes
Embedding in a specific page container ✅ Yes
You don't care — just want it to work ✅ Yes

Most of the time the default canvas is fine. But now you know how to take control when you need it.