css – 如何让Canvas占用100%的剩余空间?

前端之家收集整理的这篇文章主要介绍了css – 如何让Canvas占用100%的剩余空间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
类似于 i want a div to take 100% height,100%宽度或两者.我希望Canvas采用100%宽度和100%高度:

(Link to JsFiddle for your perusal)

标记

<div id="canvasContainer">
    <canvas id="myCanvas"></canvas>
</div>

CSS:

html {
    width: 100%;
    height: 100%;
}
body {
    width: 100%;
    height: 100%;
    margin: 0;
}
#canvasContainer {
    width: 100%;
    height: 100%;
    background-color: green;
}
#myCanvas {
    width: 100%;
    height: 100%;
}

使用Javascript:

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");

ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(canvas.width,canvas.height);
ctx.stroke();

ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(canvas.width,0);
ctx.lineTo(0,canvas.height);
ctx.stroke();

这导致一些事情没有占据浏览器窗口的100%:

如果删除Canvas,它可以正常工作:

那个缺点就是我没有Canvas.

解决方法

调整画布元素的大小

如果你使用CSS拉伸画布,你将拉伸整个屏幕的默认大小为300×150像素的可怜画布 – 想象你有一个大小的图像和你做的相同 – 将看起来非常糟糕.

无法使用CSS拉伸画布内容(它充当图像的方式).您需要显式设置画布的像素大小.

这意味着您需要获取父容器的大小并将其设置为画布上的像素值:

首先,摆脱滚动条等,调整你的CSS:

body,html {
    width: 100%;
    height: 100%;
    margin: 0;
    padding:0;
    overflow:hidden;
}

现在修改此规则:

#myCanvas {
    background-color: green;
    position:fixed;
    left:0;
    top:0;
}

现在只将标记减少到此(如果您希望画布覆盖整个场景,则不需要窗口以外的容器):

<canvas id="myCanvas"></canvas>

现在我们可以计算出尺寸:

var canvas;

window.onload = window.onresize = function() {

    canvas = document.getElementById('myCanvas');
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;   
}

就是这样.

Working demo(调整窗口大小看).

原文链接:https://www.f2er.com/css/214006.html

猜你在找的CSS相关文章