javascript - 无法在 Canvas 上绘制正方形

标签 javascript html

大家好,我正在用 JavaScript 开始玩贪吃蛇游戏。现在我要做的是在 Canvas 中央画一个绿色的小方 block 。我已经设置了 fillStyle 并使用了 fillRect 方法,但我什么也没得到。有人可以解释这个问题吗,我真的很感激,谢谢:)

const canvas = document.querySelector('#canvas');
const ctx = canvas.getContext('2d');

ctx.fillStyle = 'limegreen';
ctx.fillRect(375, 250, 10, 10);
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Snake Game</title>
	<style>
		body {
			background-color: #333;
		}

		canvas {
			background-color: #4d4d4d;
			margin: auto;
			display: block;
			position: absolute;
			left: 0;
			right: 0;
			top: 0;
			bottom: 0;
			width: 750px;
			height: 500px;
			
		}
	</style>
</head>
<body>
	<canvas id="canvas"></canvas>
	<script src="script.js"></script>
</body>
</html>

最佳答案

看起来您的 Canvas 尺寸太小(即默认尺寸 300w x 150h),这意味着绿色矩形绘制在 Canvas 尺寸之外的 [375,250] 处。

尝试设置 Canvas 的 widthheight 属性(即匹配您的样式)如下:

canvas.width = 750;
canvas.height = 500;

这将确保适当设置 Canvas 分辨率/尺寸,从而使矩形可见。

要点: Canvas 有它自己的维度概念。这些不是从应用于 Canvas 的任何 CSS 样式继承的。

这是一个工作片段:

const canvas = document.querySelector('#canvas');
const ctx = canvas.getContext('2d');

// Necessary to specify the resolution of the canvas
// explicitly by doing this:
canvas.width = 750;
canvas.height = 500;

ctx.fillStyle = 'limegreen';
ctx.fillRect(375, 250, 10, 10);
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Snake Game</title>
  <style>
    body {
      background-color: #333;
    }
    
    canvas {
      background-color: #4d4d4d;
      margin: auto;
      display: block;
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      width: 750px;
      height: 500px;
    }
  </style>
</head>

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

</html>

关于javascript - 无法在 Canvas 上绘制正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54175807/

相关文章:

html - 如何将语义 HTML 合并到 React 中?

javascript - if 语句 javascript on select 标签

javascript - 如何在给定 JavaScript 中的 Schläfli 符号的庞加莱圆盘上绘制双曲曲面分割?

javascript 按钮 当选择某个值时,如何从所有按钮中删除一个类?

javascript - 如何获取悬停时出现的元素的宽度

javascript - 在 JavaScript 中启用/禁用导航项的最佳方式?

javascript - 鼠标悬停时 Jquery 交换图片库

javascript - 如何在透明png下方移动较低的z级元素

javascript - SVG 动画像蜗牛一样在路径上

javascript - 在html中 ionic 中多次运行的函数