【发布时间】:2016-09-26 14:57:46
【问题描述】:
根据 Javascript 的 window.innerWidth 和 window.innerHeight 属性的文档,两者都是在没有工具栏和滚动条的情况下计算的。但是,当我尝试将 div 元素和 canvas 元素设置为与窗口相同的大小时,这两个元素的宽度和高度属性都有多余的部分。我该如何解决这个问题?
HTML
<body>
<div id="gameScreen">
<canvas id="basemap"></canvas>
</div>
</body>
CSS
html, body{
margin: 0;
padding: 0;
}
#gameScreen{
margin: 0;
padding: 0;
border: 1px solid black;
}
#basemap{
margin: 0;
padding: 0;
background-color: red;
}
JS
function sizePage(){
var gameScreen = document.getElementById("gameScreen");
var basemap = document.getElementById("basemap");
var canvasWidth = window.innerWidth;
var cnavasHeight = window.innerHeight;
gameScreen.style.width = canvasWidth +"px";
gameScreen.style.height = cnavasHeight +"px";
basemap.width = canvasWidth;
basemap.height = cnavasHeight;
}
sizePage();
window.addEventListener("resize", function(){
sizePage();
})
【问题讨论】:
-
@HansGerber 是的,谢谢。
-
对我来说似乎工作正常。当你说他们在
both elements have excess on their width and the height properties时,他们有多大? -
@phreakv6 宽度似乎只比屏幕或滚动条宽度宽 2px。所以这很容易解决。高度似乎要大得多,但是,可能是工具栏的高度。我试图弄清楚多少。不过,我的困惑是,高度和宽度不应该包括工具或滚动条尺寸。
-
我明白了。在 OS X 上的 Chrome/Safari 上,滚动条仅在需要时出现,并且确实出现在画布顶部。我注意到这是使用
document.body.scrollWidth和document.body.clientWidth时的行为,但如果这对你有用,你可以尝试。 -
@phreakv6 是完全禁用滚动条还是只减去滚动条宽度更好?
标签: javascript html css canvas