css-sprites vs inline / javascript

时间:2011-02-15 18:53:19

标签: javascript image base64 inline css-sprites

我正在做一个显示许多小图标的网站(星星,旗帜,文件夹......)

现在我正在使用CSS精灵技术,但效果很好,但很难保持。

我正在考虑制作一个大的.js文件,所有图像都编码为javascript变量。然后以这种方式显示图像:

images.js

var myimage1 = 'data:image/png;base64,iVBORw0KGgoAAAANS...';
var myimage2 = 'data:image/png;base64,cB324CD64aB3Cme23...';

html代码

<script type=text/javascript src=images.js></script>
....
<img src="javascript:myimage1">
<img src="javascript:myimage2">

我知道.js文件会更大,但它很容易维护,并且会被浏览器缓存。

这是一个好主意还是坏主意?这是跨浏览器吗?

4 个答案:

答案 0 :(得分:4)

留下CSS精灵。如果您的用户禁用了JavaScript,则他们将无法看到图片。

答案 1 :(得分:2)

如果您决定 坚持使用CSS sprites (例如,因为您需要IE6 / 7支持,或者担心没有JS后备),那么有些事情这可能有助于维护:

  • 根据形状将精灵组织成单独的图像。例如,将所有20x20徽章放在同一个精灵中,将所有30x15文件夹放在另一个精灵中。 (是的,您将有更多的HTTP请求,但HTTP性能是要考虑的许多因素之一。)这使得计算CSS 更多更简单。您可以将精灵设置为单列,双列(这对于翻转效果很有用)或任何保持最干净的事物。处理一个大的,不规则的精灵是一种痛苦!

  • 添加新图像的影响较小的模式。例如,始终将新项目添加到底部,因此您无需在新图像上方重新计算CSS图像。 (如果你按照我的第一点组织精灵,这才真正有意义。)

  • 如果您不再使用精灵,只需将其删除即可。在旧点留下白色空格或灰色x或其他东西。然后,当你有时间和一堆被删除的图像清理时,一次完成所有操作。 (同样,如果你对性能感到疯狂,你可能不喜欢在这些文件中留下任何备用字节......)

只是一些想法。

答案 2 :(得分:1)

答案 3 :(得分:0)

我会说这是一个坏主意,因为如果用户禁用了JavaScript,您的图像都不会出现。雅虎估计约有2%的访问者不使用JavaScript (source)