Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在创建时设置画布宽度/高度_Javascript_Jquery_Html_Css_Jquery Ui - Fatal编程技术网

Javascript 在创建时设置画布宽度/高度

Javascript 在创建时设置画布宽度/高度,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,因此,我试图在jQueryUI小部件中创建一个画布对象,该小部件的宽度和高度由用户指定。然后用渐变填充画布 这样做不起作用,fillrect的宽度太窄 this.canvas = $("<canvas/>", { width: this.options.width, height: this.options.height }).appendTo(this.element); this.canvas=$(“”,{width:this.options.width,height:this

因此,我试图在jQueryUI小部件中创建一个画布对象,该小部件的宽度和高度由用户指定。然后用渐变填充画布

这样做不起作用,fillrect的宽度太窄

this.canvas = $("<canvas/>", { width: this.options.width, height: this.options.height }).appendTo(this.element);
this.canvas=$(“”,{width:this.options.width,height:this.options.height});
然而,这样做是可行的

this.canvas = $("<canvas width=\""+ this.options.width + "\" height=\""+ this.options.height + "\"/>").appendTo(this.element);
this.canvas=$(“”).appendTo(this.element);

这两种方法的区别是什么?

在第二种情况下,canvas元素的宽度和高度将作为属性添加,这是设置canvas宽度和高度的正确方法

在第一种情况下,画布宽度和高度将设置为css样式。使用css设置画布宽度和高度不会设置画布元素的实际宽度和高度,它只会提供原始画布的缩放效果(此大小不会被视为执行内部计算)

查看以下内容以了解更多信息。

$('',{properties})
的一个奇怪之处是高度和宽度属性作为样式而不是属性应用

您可能可以使用以下工具做您想做的事情:

   $("<canvas/>").attr({ width: this.options.width, height: this.options.height }).appendTo(this.element);
$(“”).attr({width:this.options.width,height:this.options.height}).appendTo(this.element);
JSFiddle: 在回答您实际提出的问题时,第一个版本将特性应用为样式。这仅限于特定的jQuery属性,例如,不能使用它设置{'background-color':'green'}

第二个版本将
height
width
设置为属性,这是您需要的,但更好的方法如我的示例所示


一般建议:为元素连接字符串总是一个坏主意(最好避免)。

那么您是说第一种情况与这样说相同:this.canvas=$(“”)。appendTo(this.element)@user3660362接受迟交的答案的任何原因,实际上没有解释将宽度和高度设置为属性和通过css之间的区别吗?不要因为我猜到了他真正想做什么而不是他问什么而感到不安。我日常工作的一部分是翻译用户需求:)@TrueBlueAussie哈哈,对我来说没什么大不了的,但他的最后一个问题是这两种方法的区别是什么?我认为这个答案实际上回答了这个问题,你的答案为他喜欢的编码方式提供了一个解决方案。所以实际上我回答了这个问题。后来你用我的ans中的相同信息编辑了你的ans,这表明你同意上述观点。我们的答案相似,但包含不同的信息。我只是解释了一下,因为你似乎认为没有足够的信息可以作为答案。就我个人而言,我认为我的第一行就足以回答他的问题,因为很明显,他的第二种方法是设置属性,但嘿,这只是我的观点。:)+1用于指出经常被忽略的
$(“”,{properties})
jQuery方法。这是一个有点有限,但可以相当方便。