A reines CSS Ansatz, der die Lösung von @jerseyboy oben ergänzt.
Funktioniert in Firefox (getestet in v29), Chrome (getestet in v34) und Internet Explorer (getestet in v11).
<!DOCTYPE html>
<html>
<head>
<style>
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
canvas {
background-color: #ccc;
display: block;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<canvas id="canvas" width="500" height="500"></canvas>
<script>
var canvas = document.getElementById('canvas');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.fillRect(25,25,100,100);
ctx.clearRect(45,45,60,60);
ctx.strokeRect(50,50,50,50);
}
</script>
</body>
</html>
Link zum Beispiel: http://temporaer.net/open/so/140502_canvas-fit-to-window.html
Aber seien Sie vorsichtig, wie @jerseyboy in seinem Kommentar schreibt:
Die Skalierung der Leinwand mit CSS ist mühsam. Zumindest bei Chrome und Safari entsprechen die Maus-/Touch-Event-Positionen nicht 1:1 den Canvas-Pixelpositionen, und Sie müssen die Koordinatensysteme transformieren Systeme transformieren.