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 >    <canvas ></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 ></canvas>

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

var canvas;window.onload = window.onresize = function() {    canvas = document.getElementById('myCanvas');    canvas.width = window.innerWidth;    canvas.height = window.innerHeight;   }

就是这样.

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

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部