使用百分比而不是像素会改变 html 5 画布的属性吗?

2024-04-04

我正在练习 javascript,我正在尝试制作一个游戏。我希望画布元素是全屏的,因此我对高度和宽度属性使用了百分比,但是当我这样做时,它的行为与通常不同。当我运行调试代码时,它应该生成一个 50px x 50px 的盒子,但图形看起来比正常情况大。

我尝试获取画布的高度和宽度(以像素为单位),但这不起作用。它不会报告任何错误消息,但它仍然太大。

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <canvas id="canvas" style="height: 100%; width:100%;"></canvas>
  </body>
<style>
    html, body {width: 100%; 
    margin: 0;
    height: 100%;
    overflow: hidden;
    position:fixed;}
</style>
<script>
  var canvas = document.getElementById("canvas")
  var c = canvas.getContext("2d")

  c.fillStyle = "#FFFF00"
  c.fillRect(50,50,50,50)
</script>

没有任何错误消息出现,但它的大小不正确,我不明白为什么它不起作用。


如果在 CSS 中设置画布大小或使用元素属性设置画布大小,则会有所不同。

画布元素的大小由其设置width and height属性(作为数字)。这设置了用于在内存中存储画布绘图的可寻址像素数。在没有宽度和高度属性的情况下,画布元素尺寸设置为 300 x 150(像素)default https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas.

应用于画布的 CSS 可以使用将画布视为图像的软件插值来缩放其尺寸。正如小图像在缩放到全屏时看起来更大一样,300 x 150 像素画布和在其中绘制的对象(使用画布像素坐标)在放大时看起来更大。

要使画布坐标与屏幕尺寸(以像素为单位)匹配,请设置其width and height像素数值的属性。例如。

  var canvas = document.getElementById("canvas")
  var c = canvas.getContext("2d")

  c.fillStyle = "#FFFF00"
  c.fillRect(50,50,50,50)
  console.log( canvas.width, canvas.height);
  alert( "fix?" )
  canvas.style="";  // remove CSS scaling
  canvas.width = document.body.clientWidth;
  canvas.height = document.body.clientHeight;
  c.fillStyle = "#FFFF00"
  c.fillRect(50,50,50,50)
  body {
    width: 100%; 
    margin: 0;
    height: 100%;
    background-color: honeydew;
    overflow: hidden;
    position:fixed;
  }
  canvas {
    background-color: silver;
  }
    <canvas id="canvas" style="height: 100%; width:100%;"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用百分比而不是像素会改变 html 5 画布的属性吗? 的相关文章

随机推荐

  • relativelayout运行时中的位置视图

    我想向相对布局添加一个视图 该视图必须添加到指定位置 我有这个 int x int y button setOnTouchListener new OnTouchListener public boolean onTouch View v
  • Android 自定义 TextView 显示货币

    我需要为文本视图设置一个掩码 以将其文本转换为特定样式 货币 我自己的样式 如下所示 Rls 但我需要能够稍后获取它的原始文本 我该怎么办 假设我将把这个字符串传递给 TextView 2120000 用户应该看到这样的内容 Rls 2 1
  • 是否有任何参考资料/MSDN 教程来显示对“if (!condition)”或“if (condition == false)”的支持? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我的 OData 返回数据包含“@odata.type”?

    我在本地创建了一个 OData 应用程序 并且请求地址是 http localhost 5182 odata Users http localhost 5182 odata Users EnableQuery public IHttpAct
  • 将一串文本放在一行上

    有没有办法将一串文本保留在一行上 这样如果 div 宽度变小 整个字符串将下降到下一行而不是一半 Example Industry Updates 8th September 2013 这种情况通常发生在移动浏览器上 而宽度较小时 理想的情
  • 带有标识符的 NSTableView 单元格始终给出 nil

    我正在致力于构建 MacOS 应用程序 我正在尝试制作表格视图 当我按下添加按钮时更新单元格 以下是我的代码 func tableView tableView NSTableView viewFor tableColumn NSTableC
  • 我可以在 Bazaar 中编辑旧版本的消息吗?

    如何编辑旧版本的消息以更正确地描述其更改 如果不更改已修改修订及其所有后代的修订 ID 则无法编辑旧修订的提交消息 好吧 从技术上讲 如果您足够努力的话 您可以 但结果的技术术语是 损坏的存储库 bzr 中的存储库是分布式修订数据库的副本
  • 使用 NextJS API 发送文件作为响应

    正如标题所示 在 NodeJs Express 中 我可以使用以下行返回一个文件作为响应 res sendFile absolute path to the file 假设我想从 NextJs 目录中的输出文件夹返回单个图像 如何使用 Ne
  • 具有色相/饱和度和更多控件的随机颜色生成器

    In 这个问题 https stackoverflow com questions 1484506 random color generator in javascript我发现了很多有趣的函数来生成随机颜色 我需要一个接受的随机颜色生成器
  • Iframe 文件上传进度条?

    我目前正在开发一个网络应用程序 该应用程序允许用户上传文件而无需重新加载页面 到目前为止 用户可以浏览文件 并且当输入更改时 将使用以下 iframe 技术上传文件 HTML
  • Debian 7、fstab、mount.cifs 参数无效

    我尝试挂载 cifs 但出现以下错误 但没有找到该错误 mount a mount error 22 Invalid argument 我尝试在我的 etc fstab 中 192 168 0 1 ShareRep home user sh
  • 多个文本节点上的 XPath 函数

    使用 XPath 1 0 想要获取在每个文本节点上应用 XPath substring 函数的文本节点列表 substring p text 10 仅给出第一个文本的子字符串 当 p text 给出所有这些 但希望所有子字符串均已设置 ED
  • 如何编写随机 RSI 指标

    我的指标看起来不像 TradingView 中的内置随机 RSI 指标 如何获得熟悉的外观来复制 st RSI 指标 这里是截屏 https www tradingview com x UdahzWrj 这显示了我的代码和 TradingV
  • 覆盖父类中使用的类

    假设有一个类NiceClass使用其他类LesserClass在我无法编辑的地方 NiceClass py class LesserClass stuff class NiceClass Lots of use of lesser clas
  • 如何将 React 组件放入 HTML 字符串中?

    我有一个HTML 字符串数组 eg h1 Hi h1 我想放置
  • 空手道:XML 元素更改为具有空命名空间

    当 xml 消息定义如下时 karate 会向子元素添加空名称空间 空手道功能 Feature test xml Scenario test xml empty namespace def x
  • 任何图像文件格式是否支持负浮点数?

    我正在使用 OpenGL 来实现一些屏幕空间过滤器 出于调试目的 我想保存一堆纹理 以便可以比较各个像素值 问题是这些 16 位浮点纹理具有负值 您知道有哪些支持负值的图像文件格式吗 我怎样才能导出它们 是的 有一些这样的格式 您需要的是使
  • 将中心像素值复制到块中的多数值

    我有一个大小为 9085x10852 的图像像素预测数组 我想在每个像素周围得到一个 10x10 的块 如果中心像素值与块中的多数像素值不同 则用多数值替换中心像素值 谁能帮我吗 我正在挖掘scikit image今天寻找其他东西 如果你深
  • 视觉检漏仪未发现泄漏 VS2013

    无论我如何尝试 我似乎都无法让 VLD 捕获任何内存泄漏 有什么想法吗 这里也是输出的片段 Visual Leak Detector Version 2 4RC2 installed The thread 0x5748 has exited
  • 使用百分比而不是像素会改变 html 5 画布的属性吗?

    我正在练习 javascript 我正在尝试制作一个游戏 我希望画布元素是全屏的 因此我对高度和宽度属性使用了百分比 但是当我这样做时 它的行为与通常不同 当我运行调试代码时 它应该生成一个 50px x 50px 的盒子 但图形看起来比正