Is there a way to create a canvas inside a dynamic container with flexible containers?
A CSS-only solution is preferred, but I think JavaScript is needed for redrawing?
I think one solution would be to listen to the recalibration event and then scale the canvas to fit the size of the parent of the flexible window and then force the redraw, but I would prefer to use as much CSS as possible or a cleaner / smaller code solution.
The current approach is based on CSS, where the canvas is modified to fit the element of the parent flex element. The graphics are blurry, redone, and crowded from the canvas in the image below.

CSS
html,body{ margin:0; width:100%; height:100%; } body{ display:flex; flex-direction:column; } header{ width:100%; height:40px; background-color:red; } main{ display:flex; flex: 1 1 auto; border: 1px solid blue; width:80vw; } canvas{ flex: 1 1 auto; background-color:black; }
HTML:
<header> </header> <main> <canvas id="stage"></canvas> </main>
JavaScript:
$( document ).ready(function() { var ctx = $("#stage")[0].getContext("2d"); ctx.strokeStyle="#FFFFFF"; ctx.beginPath(); ctx.arc(100,100,50,0,2*Math.PI); ctx.stroke(); });
JS script showing the problem: https://jsfiddle.net/h2v1w0a1/
source share