如何保持填充窗口的元素居中
How do I keep an element that fills the window centered?
调整窗口大小时,如何使此演示中的画布始终居中(包括滚动条出现时)?画布元素应始终填充窗口。
我试着玩left
、margin-left
等设置(包括负值),但没有用。
这是你想要的吗?
这是代码的重构版本,它在窗口调整时将画布调整为窗口的最小尺寸(宽度或高度)。它还将画布的display
设置为block
,并使用margin: 0 auto
将其居中
这是演示。
UPDATE 1我用注释进行了重构,以显示在哪里更改代码,从而将画布调整为窗口高度和宽度之间的最大尺寸。
UPDATE 2我进行了重构以适应画布,因此通过将宽度和高度设置为精确的窗口,十字光标始终居中。
我还更新了CSS,删除了所有的填充和边距。
画布在window.onresize
上重新绘制。
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
function setSize() {
var w = window.innerWidth;
var h = window.innerHeight;
//var size = (h > w) ? h : w; //<<<< resize to largest between height and width
//var size = (h < w) ? h : w; //<<<< resize to smallest between height and width
//canvas.width = size;
//canvas.height = size;
canvas.width = w; //<<<< exact resizing to width
canvas.height = h; //<<<< exact resizing to height
}
function draw() {
var context = canvas.getContext('2d');
context.fillRect(0, 0, canvas.width, canvas.height);
context.strokeStyle = 'red';
context.moveTo(canvas.width/2, 0);
context.lineTo(canvas.width/2, canvas.height);
context.moveTo(0, canvas.height/2);
context.lineTo(canvas.width, canvas.height/2);
context.stroke();
}
setSize();
draw();
window.onresize = function(e) {
setSize();
draw();
};
* {
padding: 0;
margin: 0;
}
canvas {
display: block;
margin: 0 auto;
}
您尝试过overflow: hidden;
吗?
JSFiddle
body {
overflow: hidden;
}
您可以执行以下操作帆布{位置:固定;顶部:-500px;}
要使画布随页面调整大小,请尝试添加窗口调整侦听器:
window.addEventListener("resize", function () {
canvas.width = window.innerWidth;
canvas.width = window.innerHeight;
});
如果你想删除页边空白,使画布填充整个页面,请尝试在页面中添加以下CSS:
body {
margin: 0 !important;
padding: 0 !important;
}
经过一番努力,我想我已经想通了。这是工作演示(全屏版)。我最终使用了以下循环:
function render() {
requestAnimationFrame(render);
window.scrollTo(
document.documentElement.scrollWidth/2 - window.innerWidth/2,
document.documentElement.scrollHeight/2 - window.innerHeight/2
);
}
requestAnimationFrame(render);
其自动将窗口滚动到整个可滚动区域(包括不可见部分)的中间减去观看区域本身大小的一半。
感谢大家的帮助!
相关文章:
- Javascript更新孙窗口中的表单元素
- 如何在浏览器窗口变大/变小时捕捉元素的宽度
- 从html锚元素传递窗口对象
- 可以在调整窗口大小时重新调整stellar.js的元素偏移量
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- 我需要帮助弄清楚一旦窗口的垂直高度被滚动,如何切换一个元素
- 将jquery ui窗口的父元素设置为另一个元素
- 如何获得一个进度元素,它被设置为在窗口调整大小时调整大小
- 使用JavaScript更改带有窗口高度的元素样式
- 如何将剑道UI窗口与页面上的另一个元素对齐
- 滚动窗口内的一个元素,该窗口具有滚动条
- 使用JQuery从窗口底部修复元素
- Jquery:当鼠标指针进入和离开元素时,创建一个弹出窗口
- 如何获得点击的元素'id并在jquery中打开一个弹出窗口
- 获取网页html元素值,而无需使用JavaScript在新窗口或新选项卡中打开页面
- 获取元素左侧的像素Javascript似乎只有在窗口稍微调整大小时才起作用
- 如何保持填充窗口的元素居中
- 是否可以在chrome的检查元素窗口中添加一个新选项卡
- 警告中心元素窗口(jQuery)
- JCarousel只运行在IE11当我有检查元素窗口打开