Javascript 如何使填充窗口的元素居中?

Javascript 如何使填充窗口的元素居中?,javascript,html,css,canvas,layout,Javascript,Html,Css,Canvas,Layout,调整窗口大小时,如何使画布始终居中(包括滚动条出现时)?canvas元素应始终填充窗口 我尝试过使用left、margin left等设置(包括负值),但没有效果。是否尝试过溢出:隐藏 body { overflow: hidden; } 您是否尝试过溢出:隐藏 body { overflow: hidden; } 你可以这样做 帆布{ 位置:固定; 顶部:-500px; }您可以执行以下操作 帆布{ 位置:固定; 顶部:-500px; }要使画布随页面调整大小,请尝试添加窗口调

调整窗口大小时,如何使画布始终居中(包括滚动条出现时)?canvas元素应始终填充窗口


我尝试过使用
left
margin left
等设置(包括负值),但没有效果。

是否尝试过
溢出:隐藏

body {
  overflow: hidden;
}

您是否尝试过溢出:隐藏

body {
  overflow: hidden;
}
你可以这样做 帆布{ 位置:固定; 顶部:-500px; }

您可以执行以下操作 帆布{ 位置:固定; 顶部:-500px;
}

要使画布随页面调整大小,请尝试添加窗口调整侦听器:

window.addEventListener("resize", function () {
    canvas.width = window.innerWidth;
    canvas.width = window.innerHeight;
});
如果要删除页边距以便画布填充整个页面,请尝试将以下CSS添加到页面:

body {    
    margin: 0 !important;
    padding: 0 !important;
}

要使画布随页面调整大小,请尝试添加窗口调整侦听器:

window.addEventListener("resize", function () {
    canvas.width = window.innerWidth;
    canvas.width = window.innerHeight;
});
如果要删除页边距以便画布填充整个页面,请尝试将以下CSS添加到页面:

body {    
    margin: 0 !important;
    padding: 0 !important;
}

这是你想要的吗

这是代码的重构版本,在调整窗口大小时将画布调整为窗口的最小尺寸(宽度或高度)。它还将画布的
显示设置为
block
,并使用
margin:0 auto
将其居中

这是你的电话号码

更新1我用注释进行了重构,以显示在何处更改代码,从而将画布大小调整为窗口高度和宽度之间的最大尺寸

更新2我已重构以适应画布,因此通过将宽度和高度设置为精确的窗口,十字光标始终居中

我还更新了CSS,删除了所有的填充和边距

画布将在
窗口.onresize
上重新绘制

var canvas=document.createElement('canvas');
document.body.appendChild(画布);
函数setSize(){
var w=窗内宽度;
var h=窗内高度;

//var size=(h>w)?h:w;//这是您想要的吗

这是一个重构版本的代码,在调整窗口大小时将画布大小调整为窗口的最小尺寸(宽度或高度)。它还将画布的
显示设置为
,并使用
边距:0 auto
将其居中

这是你的电话号码

更新1我用注释进行了重构,以显示在何处更改代码,从而将画布大小调整为窗口高度和宽度之间的最大尺寸

更新2我已重构以适应画布,因此通过将宽度和高度设置为精确的窗口,十字光标始终居中

我还更新了CSS,删除了所有的填充和边距

画布将在
窗口.onresize
上重新绘制

var canvas=document.createElement('canvas');
document.body.appendChild(画布);
函数setSize(){
var w=窗内宽度;
var h=窗内高度;

//var size=(h>w)?h:w;//经过多次修改后,我想我找到了答案。下面是()。我最终使用了以下循环:

function render() {
    requestAnimationFrame(render);
    window.scrollTo(
        document.documentElement.scrollWidth/2 - window.innerWidth/2, 
        document.documentElement.scrollHeight/2 - window.innerHeight/2
    );
}
requestAnimationFrame(render);
它会自动将窗口滚动到整个可滚动区域(包括不可见部分)的中间减去查看区域本身大小的一半


感谢所有人的帮助!

经过多次努力,我想我已经找到了答案。下面是()的例子。我最终使用了以下循环:

function render() {
    requestAnimationFrame(render);
    window.scrollTo(
        document.documentElement.scrollWidth/2 - window.innerWidth/2, 
        document.documentElement.scrollHeight/2 - window.innerHeight/2
    );
}
requestAnimationFrame(render);
它会自动将窗口滚动到整个可滚动区域(包括不可见部分)的中间减去查看区域本身大小的一半


感谢大家的帮助!

很抱歉误解,我的目标不是隐藏滚动条,而是在调整窗口大小时使画布居中(基本上是使滚动条始终居中)不知道你是什么意思。在小提琴中,十字架的中心是在所有宽度的中间。当滚动条出现时,画布停止居中,并停留在左上角。AHA,我明白你的意思。在大屏幕上,当画布高于屏幕高度时,你仍然想要以高度为中心。所以,你的JS需要GE。t将画布高度和窗口高度之差除以2,然后滚动该值。这听起来很有希望!我尝试使用window.innerWidth(和相应的高度)调整scrollTo中的坐标,但无法使其正常工作。如何获得外部(即CSS)画布宽度,而不是内部(100px)画布宽度?抱歉误解,我的目标不是隐藏滚动条,而是在调整窗口大小时使画布居中(基本上是使滚动条始终居中)不知道你是什么意思。在小提琴中,十字架的中心是在所有宽度的中间。当滚动条出现时,画布停止居中,并停留在左上角。AHA,我明白你的意思。在大屏幕上,当画布高于屏幕高度时,你仍然想要以高度为中心。所以,你的JS需要GE。t将画布高度和窗口高度之差除以2,然后滚动该值。这听起来很有希望!我尝试使用window.innerWidth(和相应的高度)调整scrollTo中的坐标,但无法使其正常工作。如何获得外部(即CSS)画布宽度,而不是内部(100px)画布宽度?感谢您花时间回答!我实际上是在寻找画布,以便将其调整为窗口的最大尺寸,以便始终覆盖它。@user1667423我已更新了我的答案,以选择最大尺寸,这是否符合您的期望?谢谢!当窗口较大时,画布可以居中放置,但在制作时似乎仍然不起作用很小。我想我可能必须使用window.scroll来运行或做些什么。@user1667423我想我可以