为什么我们可以't使用css设置画布的宽度和高度
why we can't set width and height for canvas using css
当高度和宽度是在css而不是DOM中指定时,为什么画布显示为缩放的画布?
Html:
<canvas></canvas>
Css:
canvas{
width:100px;
height:100px;
}
您可以使用CSS在画布上设置宽度和高度,但是,
canvas width,height属性决定了将用于在画布上绘制的实际像素。它用于画布坐标系统。
另一方面,CSS的宽度/高度与框模型有关。
默认情况下,画布的宽度为300像素,高度为150像素。如果您设置CSS宽度/高度而不设置将应用于300px/150px的画布属性。想象一个300px/150px大小的图像,使用CSS将宽度/高度设置为100px/100px。会发生什么?它会扭曲对吗?同样的东西也适用于画布。
您可以在HTML生活标准页面上找到更多详细信息-https://html.spec.whatwg.org/multipage/scripting.html#attr-画布宽度
希望能回答你的问题。
因此,将画布元素想象为由两个不同的视图组成。
- html元素(画布)
- 画布的内部绘图表面
第一种方法:
通过css设置画布的高度和宽度只会将它们设置为html元素画布,而不会设置为内部绘图表面(对于画布元素,这通常是不好的做法)。
现在,通常使用这种方法,当元素的宽度和高度大于绘图表面的默认宽度和高度时,浏览器所做的是放大绘图表面以查找画布元素的大小。因此,您会注意到绘图表面被放大。
第二种方法:
通过元素宽度和高度属性设置画布的高度和宽度,将它们设置为画布和绘图曲面。像这样,
<canvas width="300" height="300"></canvas>
canvas
元素具有height
和width
属性。通过javascript代码分配值:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 100;
canvas.height = 100;
至于你的问题,这是因为你通过css调整大小的唯一因素是画布的"容器",而不是画布本身的大小。当你试图在画布上绘制的"容器"大小大于画布本身的大小时,图像看起来会很模糊。
您的写作方式似乎没有任何问题。你检查过CSS文件的链接是否正确吗?
我通常添加之类的东西
border: 1px solid;
到我的css,让我算出宽度和高度。你可以查看我的小提琴
- 为img设置高度和宽度
- jQuery在.show期间设置高度动画('幻灯片')
- textarea根据内容js或jquery设置高度
- 如何设置高度:0
- 页脚在滚动底部时没有设置高度动画
- iFrame - 在 iFrame 中更改内容时自动设置高度
- jQuery 断头台插件 - 在哪里设置高度和宽度
- 如何防止在 Safari 中使用 javascript 设置高度后在页面加载时运行过渡
- 如何使用 javascript 使用 ::before 选择器为元素设置高度
- 溢出:即使设置高度也自动不起作用
- 根据 jQuery 中多个实例上的另一个元素高度设置高度
- extJs(设置高度和宽度)(以百分比表示)
- 设置高度动画时元素跳跃
- 设置高度'单击按钮时元素的s
- jQuery:设置高度<部分>达到所有孩子的身高
- ExtJs,从不同版本的iframe创建窗口,正确设置高度
- Internet Explorer 7框架,设置高度为100%
- 如何设置高度或填充在选择框(下拉框)为safari和chrome
- JQuery获取和设置高度
- 需要一些jQuery滑动框脚本的帮助,以设置高度等于文本