Canvas API Examples
ctrl + ~ -> opens the terminal inside VS Code!
<canvas id="example_canvas"></canvas>
<script type="module">
    const cnv = document.getElementById (`example_canvas`)
    cnv.width = cnv.parentNode.scrollWidth
    cnv.height = cnv.width * 9 / 16
    const ctx = cnv.getContext (`2d`)
    let x_pos = -100
    const draw_frame = () => {
        ctx.fillStyle = `turquoise`
        ctx.fillRect (0, 0, cnv.width, cnv.height)
        
        ctx.fillStyle = `hotpink`
        ctx.fillRect (x_pos, cnv.height / 2 - 50, 100, 100)
        x_pos += 1
        if (x_pos > cnv.width) x_pos = -100
        requestAnimationFrame (draw_frame)
    }
    draw_frame ()
</script><canvas id="recursive_squares"></canvas>
<script type="module">
    const cnv = document.getElementById (`recursive_squares`)
    cnv.width = cnv.parentNode.scrollWidth
    cnv.height = cnv.width
    
    const ctx = cnv.getContext (`2d`)
    function rand_col () {
        return `hsl(${ Math.random () * 360 }, 100%, 66%)`
    }
    function draw_square (size) {
        const x = (cnv.width - size) / 2
        const y = (cnv.height - size) / 2
        ctx.fillStyle = rand_col ()
        ctx.fillRect (x, y, size, size)
    }
    function draw_squares (start_size) {
        draw_square (start_size)
        if (start_size > 0) {
            draw_squares (start_size - 20)
        }
    }
    draw_squares (cnv.height)
</script>