javascript - 无法将 Canvas 尺寸设为 1920x1080

标签 javascript canvas html5-canvas

我的显示器分辨率为 1920x1080。我想要一个全屏 Canvas 来占据整个分辨率。

index.html

<html>
    <head>
        <link rel="stylesheet" href="index.css" />
    </head>

    <body>
        <canvas id="c"></canvas>
        <script src="index.js"></script>
    </body>

</html>

index.css

html, body {
    height: 100%;
    width: 100%;
    padding: 0px;
    margin: 0px;
}

#c {
    width: 100%;
    height: 100%;
    background-color: red;
}

index.js

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

document.body.addEventListener("click", function() {
    document.body.requestFullscreen();
    canvas.width = document.body.clientWidth;
    canvas.height = document.body.clientHeight;
    console.log(canvas.width);
    console.log(canvas.height);
}, false);

当我单击屏幕时,我会按预期获得全屏 Canvas ,但记录的输出是

1920

969

不是 1920,而是 1080。如何确保 Canvas 占用完整的可用分辨率?

谢谢!

编辑:它看起来像 Element.requestFullScreen函数是异步的,这就是为什么我可能无法设置 Canvas 尺寸。 API 说它返回一个 promise ,但我不知道如何访问它。

最佳答案

您的代码在我这边工作,尽可能不要使用 %,vh 更适合您的用例,下面是 CSS 示例。

html, body {
    height: 100vh;
    width: 100%;
    padding: 0px;
    margin: 0px;
}

示例:https://codepen.io/pen/poomVem

关于javascript - 无法将 Canvas 尺寸设为 1920x1080,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59027513/

相关文章:

php - 存储在 Mysql BLOB 中的图像,尝试显示时出错

javascript - 将一个 javascript 文件与缩小的脚本分开的最佳方法是什么?

javascript - 将输入长度限制为最多 10 个字符

javascript - 如何在 Windows 上安装 Node js Canvas

javascript - 在 Fabricjs 中缩放对象时缺少图案质量

javascript - 如何在单个 View /页面中呈现两个电子签名组件?

javascript - html canvas可以绘制上传的图像吗?

javascript - Breeze.js/NET+EF复杂对象行为比较奇怪

javascript - @firebase/testing - 如何使用 auth.providerId 调用 `initializeTestApp`?

javascript - 有没有办法在没有文档的情况下实例化 CanvasRenderingContext2D 对象以供网络 worker 使用?