【发布时间】:2011-11-08 12:11:15
【问题描述】:
我在一些网站上注意到的一件事是,他们使用包含许多小图像的 BIIIIIIIG 图像,然后使用 CSS background-position 来定义每个图像的坐标,而不是使用单个图像。
这是我所在的位置:
使用大精灵表的缺点
- 需要加载一张大图才能只显示一张小图
- 需要为每张图片编写(或生成)带有类的长样式表
- 包含大量类定义的混乱 CSS 可能会影响性能
- 如果更改了一张图片(或添加了另一张图片),则图片和与之关联的 CSS 都可能会遇到缓存问题
- 需要具有适当样式的
<div>(display: inline-block; width: 32px; height: 32px; background-image: url('spritesheet.png');),这会增加另一个类。 - 还有很多我不记得了,现在我正在输入它们。
使用大精灵表的优点
- ...呃...还没有。
事实上,这里唯一接近专业人士的是,当我将工作表切割成单独的图像时,生成的文件夹在磁盘上占用了 3Mb(由于每个文件 即使有 HTTP 请求的开销,也能显着节省空间。
基本上,我的问题是:有没有人有任何优点可以在单个图像上使用大表?
【问题讨论】:
-
从服务器检索“大”图像(被缓存)几乎总是比多个请求获取所有单独的图像更快。
-
你的缺点都不是真正的缺点。
-
对于在许多页面上重复元素的大型网站来说,这是一个最小的优势。否则就是浪费时间。
标签: html css image css-sprites