javascript - Canvas 有时不会调整宽度和高度

标签 javascript html html5-canvas

我尝试在下面的 Javascript 中调整 Canvas 大小:

'use strict';

(_ => {
  // 'board' is the canvas
  const board = document.querySelector('.board');
  const ctx = board.getContext('2d');

  initialise();

  function initialise() {
    board.width = board.clientWidth;
    board.height = board.clientHeight;
  }
})();

但是, Canvas 有时会自行调整大小,有时不会(默认返回 0 * 0,CSS 宽度和高度设置为 100% )。我尝试在网上搜索了一下,没有发现类似的问题。我在这里做错了什么吗?

我正在使用Chrome Version 65.0.3325.181 (Official Build) (64-bit)如果有帮助的话。提前致谢!

编辑 1

我将以下代码行添加到 HTML <head> :

  ...
  <script src="app.js" defer></script>
</head>

defer属性应该导致脚本仅在页面完成解析后加载。

编辑2

以下是我的 CSS:

.board {
  display: block;
  height: 100%;
  width: 100%;
}

因此board.clientWidthboard.clientHeight应该获得正确的尺寸,但有时却没有。

最佳答案

如果脚本在头部,您可能需要先等待文档准备好:

document.onreadystatechange = function () {
    if (document.readyState === "interactive") {
        // Your code.
    }
}

关于javascript - Canvas 有时不会调整宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49491139/

相关文章:

javascript - 通过精确定位将 2 个图像叠加在另一个(背景图像)上

javascript - 如何在react-native中使用thunk?

javascript - JS : . apply(null,arguments) -- 为什么我的函数被调用一次,而 console.log 被调用多次?

html - YouTube 和 Twitch 如何覆盖带音频视频的自动播放政策?

javascript - 从服务器代码(和状态)更新客户端浏览器中的 Canvas 元素

javascript - JS从一个圆的边缘到另一个圆的边缘画一条线

javascript - eslint错误: Unexpected block statement surrounding arrow body

javascript - HTML5 Canvas : image resizing

javascript - 仅使用 HTML 和 CSS 制作一个简单的工具提示

javascript - 如何在javascript中获取正方形边缘附近的随机点