html5画布-是否需要内联定义宽度/高度
html5 canvas - does the width/height need to be defined inline?
我一直在摆弄HTML5/Javascript,发现了一些我不理解的东西。
我试图编写一些使用HTML5画布的基本例程,发现drawImage函数并没有绘制任何内容。考虑到这是我的代码,我使用了现有教程中的代码,即HTML5 Canvas Image教程。当我在外部(即作为一个单独的文件)包含Javascript代码时,我仍然没有看到我的图像被绘制到画布上。
从那里,我逐字逐句地复制了完整的来源,在这里找到了,它确实起了作用。我开始胡思乱想,想弄清楚为什么这样做有效,但我的没有。
我发现不同之处在于逐字逐句的代码内联地定义了画布的宽度和高度。我更喜欢将样式从HTML和CSS中分离出来。如果我这样做了,代码就起作用了:
<canvas id = "myCanvas" width = "600" height = "400"></canvas>
但是如果我在外部CSS样式表中定义了画布的宽度和高度,它就不起作用了。
我确实确定我的问题之一是在Javascript文件之后包含样式表;在此之前,我的图像根本没有出现,甚至在通过alert()函数确认图像加载处理程序中的代码正在启动之后也是如此。在更改了文件的包含顺序后,我的图像确实出现了,但缩放得很奇怪,好像忽略了CSS样式。
为什么会这样?我是否遗漏了通过CSS定义画布属性的顺序?为什么Javascript在这种情况下忽略CSS样式?如果它是相关的,我已经在Chrome和Firefox的最新版本中尝试过了。
您没有在那里编写它们,您可以稍后在JavaSript:中编写它们
var can = document.getElementById('canvas1');
can.width = 600;
can.height = 400;
顺便说一下,默认值是300x150。
请注意,您永远不应该使用CSS来定义您的宽度和高度,因为您将缩放画布而不是调整其大小,从而导致模糊和比例损失。
根据HTML5规范,这是不需要的:
画布元素有两个属性来控制坐标空间的大小:宽度和高度。指定这些属性时,其值必须是有效的非负整数。必须使用解析非负整数的规则来获取它们的数值。如果缺少属性,或者解析其值返回错误,则必须使用默认值。宽度属性默认为300,高度属性默认为150。
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html
是的,它们应该写在属性中,否则画布的实际大小将等于300
x 150
。如果你用css改变它的大小,它将像其他任何图像一样被拉伸/重新缩放。
元素有两个不同的宽度和高度属性。
一个通常是内联定义的(或稍后在javascript本身中定义)。这是程序用于绘图目的的画布的实际像素尺寸。
一个是样式的宽度和高度。这可以由CSS定义(而像素宽度和高度不能)。
简单的答案是否定的。如果你愿意,你可以在javascript中设置宽度和高度,但你通过CSS分配的任何高度和宽度都会改变画布的显示大小(而不是实际大小),这可能会扭曲你的图像。
- Javascript图像宽度和高度未定义值
- 自定义 CSS 媒体打印查询中的模式高度和宽度
- 使用变量定义宽度和高度
- CodeMirror在粘贴自定义css线条高度时呈现错误
- 如何通过容器中的元素定义容器的高度
- 使图像高度相同并定义共享的总宽度
- 获取嵌套在聚合物纸张对话框中的自定义Web组件内内容的客户端高度
- 如何观看 img 元素的 ngSrc 并在自定义指令中获取新的宽度和高度
- 高度 100% 自定义滚动条
- 如何嵌入具有自定义高度的全屏响应式YouTube视频
- html5画布-是否需要内联定义宽度/高度
- 无法设置属性'高度'的未定义
- 自定义应用程序的动态高度
- 避免CSS的自定义页眉高度
- 具有初始未定义高度的jQueryui动画
- 如何从用户那里获取自定义弹出窗口的宽度和高度
- 有页面的打开部分的全部浏览器高度,所有其他部分定义的高度
- 如何显示自定义高度和宽度的模式,而不失去可调整大小的属性
- 如何在自定义高度和宽度的新弹出窗口上更改窗口标题
- js堆叠条形图自定义高度的类别