我有一个实验性问题。我想用许多 div
元素制作图像,每个 div 的 width
和 height
都为 1px
。
我从 canvas context
中获取了图像的像素数据,创建了每个 div 并给每个 div 的 background-color
赋值,这意味着 div 的数量等于图像像素的数量,但如果图像分辨率超过 100x56,浏览器渲染 html 的速度会变得非常缓慢。
以下是部分代码:
var fragment = document.createDocumentFragment();
var data = context.getImageData(0, 0, canvas.width, canvas.height).data;
for (var i = 0; i < data.length; i += 4) {
var red = data[i];
var green = data[i + 1];
var blue = data[i + 2];
var div = document.createElement('div');
div.style.width = '1px';
div.style.height = '1px';
div.style.float='left'
div.style.backgroundColor = 'rgb(' + red + ',' + green + ',' + blue + ')';
fragment.appendChild(div);
}
cnt.appendChild(fragment)
我知道这个问题并不是很普遍,但我想知道在浏览器中是否有任何案例可以更快地渲染大量元素(我使用Chrome),还是与浏览器无关?
附注:我的同事说:“Silverlight没有这样的问题,您甚至可以添加50000个元素,它仍然可以正常工作”,我想给他“我的答案”。
谢谢
cnt
已经具有正确的大小。也许是float
造成了性能问题 - 我建议尝试将其改为绝对定位,并设置left
和top
属性。 - Kobi