CSS Sprite-maps的高/宽范围是否有限制?

时间:2011-08-26 22:02:59

标签: css image browser css-sprites

让我先说明我意识到反对为大图像做CSS Sprites的论点。我甚至问a question为什么这可能被认为是个坏主意(并添加了answer of my own)。现在我们已经有了这个话题......

我将制作一个大型的CSS Sprite-map。对于制作这个精灵图的过程,我应该知道精灵图像的高度和/或宽度存在什么(如果有的话)限制,以便浏览器正确处理它。

这个问题背后的最终原因是关于是否在网格或单行/列中布置精灵图像的争论。例如:4000 x 3000而不是400 x 30000是否必要或有益?

编辑:这里的关键点不是图像的大小,而是浏览器可以为精灵处理的大小。鉴于到目前为止缺乏细节,我正在开始生成单大列精灵。一旦完成,我会将我的经历细节作为答案发布。

3 个答案:

答案 0 :(得分:4)

有时候更多的是下载时间问题。由于浏览器可以使用多个连接来下载文件,因此一个巨大的图像可以下载比一些较小的图像需要更长的时间。

如果您的图片太大以至于减慢了页面加载速度,那么可能需要考虑几个较小的精灵图像。

Direct-X 9的大小限制为4096像素,因此应用于这些元素的任何Internet Explorer过滤器都会以4096像素裁剪它们。

请参阅:IE display transparency bug on height > 4096px?

答案 1 :(得分:1)

实际上,对于 400x16560 的精灵图片,Firefox 5 +,Chrome和IE7 +中的似乎没有问题

IE的directx渲染引擎在超过4096px的图像上失败的潜在问题不会在IE7或更高版本中产生问题;我们没有方法或需要为我们当前的项目测试IE6。

我们遇到一个非常大的spritemaps问题的地方是移动平台。 Android设备可以很好地处理它们,但iOS设备严重崩溃,并且以一种奇怪的方式:它们缩小图像以适应它们接受的尺寸。所以我们的CSS适用于小的spritemap,但除了增加spritemap图像的物理尺寸之外没有任何变化,sprited图像开始显示相同html实体中spritemap的四倍,具有完全相同的CSS。 / p>

答案 2 :(得分:0)

版本1.0中的限制在v1.1中升级但是维度仍有限制:

In accord with version 1.1, the scope of the 31-bit limit on chunk
     

长度和图像尺寸已扩展为适用于所有人   四字节无符号整数。签名时不允许使用值-231   整数。

Source

一个有趣的限制是IE6.0无法显示大小为4097或4098字节的PNG图像!

但与我们在网页中使用的内容相比,这些限制非常大。