我们可以在现有的canvas中放置另一个canvas吗?如果可以,请帮忙在html5中完成。
您的问题有两种可能的解释。一种是您想要实际嵌套canvas
元素本身,像这样:
<canvas id="outer">
<canvas id="inner"></canvas>
</canvas>
根据validator.nu,这是合法的,但没有意义。 canvas
元素内部的内容是备用的。只有当浏览器不支持canvas
时,才会使用canvas
元素内部的内容,在这种情况下,内部的canvas
元素也不会被看到。
另一个可能解释您的问题的方式是在另一个canvas
中显示所示的图像。 这很简单,可以将canvas
元素用作context.drawImage()
的第一个参数。 如果您有两个canvas
元素:
<canvas id="c1" width="200" height="200"></canvas>
<canvas id="c2" width="200" height="200"></canvas>
那么 这个使用jQuery的脚本 将在第一个canvas
上绘制,然后将其作为图像添加到第二个canvas
中四次:
var c1 = $('#c1');
var ctx1 = c1[0].getContext('2d');
ctx1.fillRect(50,50,100,100);
var c2 = $('#c2');
var ctx2 = c2[0].getContext('2d');
ctx2.drawImage(c1[0],0,0,100,100);
ctx2.drawImage(c1[0],100,0,100,100);
ctx2.drawImage(c1[0],0,100,100,100);
ctx2.drawImage(c1[0],100,100,100,100);
但是,你为什么要这样做呢?你可以使用一个canvas
来复制上面第二个canvas
的图像:链接。
var c1 = $('#c1');
var ctx1 = c1[0].getContext('2d');
ctx1.fillRect(25,25,50,50);
ctx1.fillRect(125,25,50,50);
ctx1.fillRect(25,125,50,50);
ctx1.fillRect(125,125,50,50);
因此,简而言之:是的,这是可能的,但在简单使用中并不是真正必要的。
在另一个画布中嵌套画布是完全没有意义的。如果浏览器不支持canvas
,页面只能看到canvas
标签内的内容。所以,就像robertc说的那样做:
<canvas id="background">回退/填充放在这里...</canvas>
<canvas id="foreground">...或者放在这里,但不能放在其他画布中。</canvas>