武林网(www.vevb.com)文章简介:css sprites的利弊.
css sprites的利弊
关于这项技术,最大的好处有下面几个:
1,减少网页加载时的http请求数。这种情况貌似只适用于“初次加载”之类需要重新从服务器端获取资源的情况。但无论怎样,对于一个流量较大或者频繁被“重新加载”的网页,还是很有用的。
2,给链接做背景图时,可以防止a:hover 时再载入背景图片而导致的背景“闪烁”。个人觉得这一点在提升用户体验具有一定的意义。
3,图片易于管理。前提是拼合的图片有一定的规律。如下图,就是一张“网站全部使用的按钮背景”的图片。这样可以很直观的看到网站中所有的按钮样式。(我个人喜欢按照图片的一定“属性”来拼图片,一张图片都是icon或者都是btn背景…这样就可以顺便管理图片,且有一定规律可循的图片,比较容易排列在一起。当然,有些时候,也会选择按照“模块”来拼合一张图片,这样在模块化的结构中,就产生了一个简单的逻辑:调用一个模块,则调用上面的背景图。否则,这张图片就不被调用。可以有效的防止只用了一个小小的图标,就调用了整个大图片的问题。)
css sprites 适用范围:
1,需要通过降低http请求数完成网页加速。
2,网页中含有大量小图标。或者,某些图标通用性很强。
3,网页中有需要预载的图片。主要是a与a:hover背景图这种关系的。如果a与a:hover的背景图分别加载,那么,就会出现用户鼠标移到某个按钮上,按钮的背景突然消失再出来,产生“闪烁”,如果按钮文字色与大背景相同或相近,就更囧了,有可能让人产生按钮“消失”了的错觉。
需要满足的条件
在网页中,通过这项技术拼合在一起的图片最好有一项规律。定宽或者定高。最好是宽高都能定下来。需要平铺的图片,显然不适合sprite。
如上图的buttons,就属于定宽定高的情况。
定宽情况下,则可平行排列若干小图片。定高,则纵向排列小图片。
若背景既不定宽,也不定高情况下强行使用css sprites技术,则容易产生“不应该出现的图片出现在页面上”的状态。若是“强行定高”,也将非常不利于日后的维护。
总结
这项技术好与不好并不能一概而论的。要视网站的具体情况而定。分析时首先决定自己“是否需要”,还要综合开发成本,维护成本等问题。找到一个适合实际情况的方案再做定夺。及时要用sprites,建议也不要极端的将各种尺寸,各种对齐方式,各种用途图片放在一起去维护。这样的极端或许不能再减少几个http请求数,反而为日后的维护埋下隐患。
新闻热点
疑难解答