在 iPad Safari 上,将图像包含为 CSS 背景图像还是使用 html 标签更好?你有任何关于它的资源吗?
谢谢
我刚刚在我的 iPad Safari 上运行了这个测试。并且看起来 CSS 更快。
在 iPad 上亲自尝试。
3 次测试:图片标签 src:
img.onload = loadHandler;
img.src = getUrl();
CSS 背景
bg.style.background = "url('" + getUrl() + "') no-repeat";
没有 onLoad 的图片标签 src
img.onload = null;
img.src = getUrl();
在这里,我得到了以下结果:
图片标签来源:5,369 次操作/秒。
CSS 背景图像:19,554 Op/S。
图像标签 Src(无 OnLoad):2,757 Op/S。
顺便说一句,这个测试不是我创建的。
编辑:正如我所指出的,我做了一个新的测试,以另一种方式测试性能。
为了更加一致,我尝试以不同的方式看待每个解决方案。我使用了以下代码。
var count = 1;
function add(){
var p = document.getElementById("parent");
if (false){
var d = document.createElement("div");
p.appendChild(d);
d.style.background = "url('" + getUrl() + "') no-repeat";
} else {
var d = document.createElement("img");
p.appendChild(d);
d.onload = null;
d.src = getUrl();
}
d.style.position="absolute";
d.style.top=0;
d.style.left=0;
d.style.zIndex=count;
d.style.width=256;
d.style.height=256;
}
function getUrl() {
var base = "http://a.tile.openstreetmap.org/16/";
base += count + "/" + count + ".png";
return base;
}
function init(){
while(count <= 10){
add();
count++;
}
}
注意 1:我使用 z-Index,所以新的 add 元素总是在顶部。
注意 2:我正在加载不同的 img,因此浏览器不会缓存。
注3:我知道我在普通浏览器上测试过。虽然,我们可以看到它的行为并发现在 iOS/Safari 中会发生什么。
这就是发生的事情。
内存:两种解决方案都以相同的方式保持资源。所以在记忆中没有什么不同。
调用:两种解决方案都调用了相同数量的油漆和负载。虽然,IMG 总是调用一个事件。即使我明确输入“onload = null;”。
这是对DIV的调用
这是IMG的电话
不是直接的答案,但由于其他人在搜索时可能会在这里结束,我想我会分享一些见解:
我在 png 中有一个相当大的 css-sprite,它在 ipad 上的表现相当糟糕。从 png 切换到 jpg 对渲染性能(更好)产生了巨大影响。这个页面上似乎有一些关于为什么的提示:https ://gist.github.com/KrofDrakula/3639830