gpt4 book ai didi

javascript - 如何确保 Canvas 包含在视口(viewport)中

转载 作者:行者123 更新时间:2023-11-30 14:21:38 25 4
gpt4 key购买 nike

我有一个 Canvas ,这是我真正想看到的页面上唯一的东西。我试图做到这样,当我调整窗口大小时,我总是可以看到整个 Canvas ,没有滚动条,并保持纵横比。

MCVE

let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');

let w = canvas.width;
let h = canvas.height;

ctx.fillStyle = 'teal';
ctx.fillRect(0, 0, w, h);

ctx.strokeStyle = 'red';
ctx.lineWidth = 10;
ctx.rect(5, 5, w - 5, h - 5);
ctx.stroke();
* {
background-color: white;
max-height: 100%;
max-width: 100%;
margin: 0;
padding: 0;
}

div#canvasDiv {}

canvas#canvas {
display: block;
margin: auto;
}
<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
</head>

<body>
<div id="canvasDiv">
<canvas id="canvas" width="500" height="500" />
</div>
</body>

</html>

All here at jsfiddle

通过这次尝试,当我调整宽度大小时,它会重新缩放。但是,当我调整高度时,我会溢出。

通过适当的缩放调整宽度

enter image description here

使用不需要的溢出调整高度

enter image description here

最佳答案

您可能喜欢阅读这篇文章:[CSS 居中:完整指南]( https://css-tricks.com/centering-css-complete-guide/

let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');

let w = canvas.width;
let h = canvas.height;

ctx.fillStyle = 'teal';
ctx.fillRect(0, 0, w, h);

ctx.strokeStyle = 'red';
ctx.lineWidth = 10;
ctx.rect(5, 5, w - 5, h - 5);
ctx.stroke();
* {
background-color: white;
max-height: 100%;
max-width: 100%;
margin: 0;
padding: 0;
}


canvas#canvas {
display: block;
margin: auto;
position:absolute;
top:0;bottom:0;
left:0;
right:0;

}
   <div id="canvasDiv">
<canvas id="canvas" width="500" height="500"/>
</div>

关于javascript - 如何确保 Canvas 包含在视口(viewport)中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52651440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com