无论使用JavaScript,为了显示由canvas制作的图标而添加多个HTML5 canvas元素是否存在性能问题?我的意思是,div和canvas语义元素在性能方面是否有差异?
我正在尝试摆脱图像、SVG甚至FontAwesome,这就是我在问的原因。
无论使用JavaScript,为了显示由canvas制作的图标而添加多个HTML5 canvas元素是否存在性能问题?我的意思是,div和canvas语义元素在性能方面是否有差异?
我正在尝试摆脱图像、SVG甚至FontAwesome,这就是我在问的原因。
根据请求,我有这段简短的代码:
var canvas = document.createElement("canvas");
canvas.width = 250;
canvas.height = 80;
var ctx = canvas.getContext("2d");
ctx.fillStyle = "#000";
ctx.fillRect(0, 0, 250, 80);
//draw a red box
ctx.fillStyle = "#FF0000";
ctx.font = "30px Tahoma";
ctx.fillText("Hello World", 45, 50);
var dataURL = canvas.toDataURL();
document.getElementById("img-data").innerHTML = dataURL;
document.getElementById("canvas-mirror").src = dataURL;
<div id="img-data"></div>
<img id="canvas-mirror"></div>
简而言之,
是的,
性能取决于所有画布的总面积,尽量保持它(画布的总面积)小。
如果您计划使用画布,则尝试使用剪辑选项,它将提高性能。
<img>
元素一样。文档的重绘将是相同的。 - Kaiido
data:
URL,然后将其作为图像标签的src
或CSS样式的背景URL。 - Alnitak<img>
标签。现在关于 JavaScript,无论你使用什么解决方案将其位图传递给<img>
标签或任何 CSS 属性,都比简单重绘 canvas 元素更加耗费性能。 - Kaiido