画布默认大小

Posted

技术标签:

【中文标题】画布默认大小【英文标题】:canvas default size 【发布时间】:2011-12-09 05:13:47 【问题描述】:

Chrome 似乎将画布标签的默认宽度设置为 300 像素。

当我希望画布默认为其包含 div 的大小时,这有点麻烦。

使用示例here,我希望画布默认为标题的宽度并添加填充。

希望这是有道理的。

如果没有 javascript,这可能吗?

【问题讨论】:

【参考方案1】:

安排您的布局,以便有一个 div,而该 div 的唯一工作是规定和成为您希望画布的大小。

var canvas = document.createElement('canvas');
canvas.width = div.clientWidth;
canvas.height = div.clientHeight;

然后将画布添加到 div 中。

【讨论】:

这是显而易见的答案,但是我的问题是画布标签已在服务器端生成 - 它不是在客户端创建的。这是不好的做法吗? 只要您能够使用相同的技术,设置画布的宽度和高度应该不会有任何问题。 Mozilla Bespin 过去经常检查 div 是否改变了大小,然后相应地(重新)设置画布。 我想如果用户禁用了 javascript,我想确保布局看起来不错。完全避免使用 javascript 来设置初始布局的样式。看起来这是不可能的,这似乎是 canvas 标签的严重限制。同样,我可能做错了什么/使用了不良做法。 如果 JavaScript 无论如何都被禁用,Canvas 基本上毫无价值。 :// 好吧,如果必须的话,在服务器端创建它们(无论如何你正在这样做),宽度和高度为 1。如果他们碰巧启用了javascript,则对其进行调整。【参考方案2】:

芬恩,你是对的。

来自 html5 规范, http://www.w3.org/TR/2012/WD-html5-author-20120329/the-canvas-element.html#the-canvas-element

canvas元素有两个属性来控制坐标空间的大小:宽度和高度。

这些属性在指定时必须具有有效的非负整数值。

width属性默认为300,height属性默认为150

【讨论】:

w3.org/TR/2012/WD-html5-author-20120329/… 这很奇怪,对吧?我想不出任何其他具有这样“默认尺寸”的元素。我想知道为什么选择这些特定尺寸。 回答问题,但不是以建设性的方式。 @Simin Sarris 为我们提供了摆脱这种任意限制的方法【参考方案3】:

我可以确认,在 Chrome 中,默认大小是 300px x 150px。

【讨论】:

Firefox 也是如此。

以上是关于画布默认大小的主要内容,如果未能解决你的问题,请参考以下文章

xmind 设置画布大小 方便打印

将画布转换为 blob 时如何保持图像大小

用Python画图

怎样用python画图

我用QT绘制一块画布,想让画布大小可以随着窗口大小的变化而变化,要怎么实现?QT菜鸟,请求帮忙~

在窗口调整大小时动态调整画布大小