为了账号安全,请及时绑定邮箱和手机立即绑定

有趣,关于动态创建canvas的问题?

有趣,关于动态创建canvas的问题?

慕田峪7331174 2019-02-27 13:10:35
使用js创建canvas发现只有开始标签,没有闭合标签,刚开始我以为canvas是可以省略闭合标签的自闭合标签,但mdn上的解释却是:</canvas> 标签不可省与 <img> 元素不同,<canvas>元素需要结束标签(</canvas>)。如果结束标签不存在,则文档的其余部分会被认为是替代内容,将不会显示出来。var canvas = document.createElement("canvas");document.body.appendChild(canvas);//这样创建出来却没有闭合标签,它不像创建div或者span这种一样会自动成对。这是什么情况呢?
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

是因为你没有理解mdn里面说的是什么意思。


与 <img> 元素不同,<canvas> 元素需要结束标签(</canvas>)。如果结束标签不存在,则文档的其余部分会被认为是替代内容,将不会显示出来。

所谓的替代元素,是指当canvas不可用时,替代canvas的元素。也就是说如果不带结束标签,那么img标签及之后的所有元素都会被认为是替代元素,将不会被显示。


<canvas id="clock" width="150" height="150">

  <img src="images/clock.png" width="150" height="150" alt=""/>

</canvas>

如上,如果canvas不受浏览器支持,那么在这里显示的就是一个img标签。


你可以通过


var canvas = document.createElement("canvas");

var img = document.createElement("img");

canvas.appendChild(img);

document.body.appendChild(canvas);

来达到如上目的。


还有一个更有趣的点。


var canvas = document.createElement("canvas");

console.log(canvas.outerHTML)//<canvas></canvas>


查看完整回答
反对 回复 2019-03-02
  • 1 回答
  • 0 关注
  • 929 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号