类似于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
。
答案 0 :(得分:5)
如果你使用CSS拉伸画布,你将拉伸整个屏幕的默认大小为300x150像素的可怜画布 - 想象你有一个大小的图像,你做了同样的 - 会看起来很糟糕。
使用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 (调整窗口大小以查看)。
答案 1 :(得分:1)
你可以用绝对值0来定位:
canvas {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
然后只需查看它所定位的元素,添加position: relative
来处理它所覆盖的块。在您的情况下可能是:#canvasContainer
,但如果只是一个完整的屏幕,则可能为body
。
答案 2 :(得分:1)
过去我遇到过类似的问题。我的解决方案是在overflow: hidden
html
它在底部摆脱了一点点,如果你检查页面只是一点点额外的,而不是身体的高度。如果有人对这是什么有所了解我就是全部的耳朵。
答案 3 :(得分:1)
修改了一些示例,让我的工作。
JSFiddle:http://jsfiddle.net/FT3pP/1/
JS:
$( document ).ready( function () {
SizeBackground();
} );
function SizeBackground(){
var canvas = $( "canvas#background" )[0];
fitToContainer( canvas );
}
function fitToContainer( canvas ) {
canvas.width = canvas.parentElement.clientWidth;
canvas.height = canvas.parentElement.clientHeight;
}
CSS:
body, html {
margin: 0;
width: 100%;
height: 100%;
padding: 0; }
div .container {
width: 100%;
height: 100%; }
div#pallette {
position: absolute;
top: 1px;
bottom: 1px;
left: 1px;
right: 1px; }
canvas#background {
position: fixed;
left: 0;
top: 0;
background: black; }
HTML:
<body>
<div id="pallette">
<div class="container">
<canvas id="background"></canvas>
<canvas id="middleground"></canvas>
<canvas id="foreground"></canvas>
</div>
<div id="stats"></div>
<div id="chat"></div>
</div>
</body>
只包括我:
<!-- Styles Sheets -->
<link href="Scripts/App.min.css" rel="stylesheet" />
<!-- Javascript -->
<script src="Scripts/jquery-2.1.0.min.js"></script>
<script src="Scripts/jquery-ui-1.10.4.min.js"></script>
<script src="Scripts/app.js"></script>