【发布时间】:2019-01-20 21:45:51
【问题描述】:
我正在使用 HTML5 画布元素:
<style>
#myCanvas {
width: 100%;
height: 100%;
object-fit: contain;
}
</style>
<canvas id="myCanvas" ontouchstart="..." />
我知道有一个底层位图,然后有一个 DOM 元素将这个位图装箱,并且这 2 个对象具有不同的尺寸,例如位图被缩放/挤压以适应 DOM 元素。如果位图尺寸总是等于 DOM 元素尺寸,我会更容易理解,但这不是它的工作原理。
如何查询各个维度? 如何设置各自的尺寸? 如何在 Chrome 开发者工具中查看 2 组维度? 如何使两组维度保持同步?
这很重要,因为鼠标点击和手指触摸是在 DOM 坐标中传递的,但我们通常需要在画布坐标中解释它们。
(还有一个相关的问题:我做对了吗,将 DOM 元素设置为扩展到父级允许的最大尺寸?)。
【问题讨论】:
-
位图尺寸由元素的高度和宽度属性/属性定制。您说的是 CSSOM 大小,您只需忽略它...
-
使用 CSS h/w 来设置 CSS 样式可能会产生变形效果。
canvas.height和canvas.width可能是要走的路,您可以查询您希望画布填充的元素并相应地设置画布尺寸。检查this thread(和this,当你在它的时候),如果你想调整它的大小,查看debouncing。 -
另外,如果您发布您想要完成的工作的草图或描述,我(或其他人)可以用相关示例来回答问题。