在分析各个网站的CSS时,我们经常可以看到一些网站有很多的元素共享了一张背景图片,而这张背景图片包含了所有这些元素需要的背景,这种技术就叫做CSS Sprites。

例如淘宝的css sprites

URL是http://a.tbcdn.cn/p/fp/2011a/assets/sprites.gif

这样做有什么好处呢?

显而易见,浏览器在载入每一张图片的时候都会发起一个HTTP请求。

如果使用CSS Sprites技术,将所有的图片合成一张图片,那么,这样多个HTTP请求会被合成一个HTTP请求。

这样就既能大大降低后台服务器的开销,又能加快网页载入速度。

CSS Sprites原理:

CSS Sprites是通过背景图片外加背景图片定位来实现的。现在做一个简单的实验:

我们以淘宝的图片为例,在html里面插入一个div,宽高为200px*100px,

a.将图片的偏移设置为

图像显示效果如下:

b.将图片的偏移设置为

图像的显示效果如下:

这样,一个简单的CSS Sprites就实现了。

CSS Sprites优点

CSS Sprites为什么突然跑火,跟能够提升网站性能有关。显而易见,这是它的巨大优点之一。

1.利用CSS Sprites能很好地减少了网页的http请求,从而大大的提高了页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;

2.个人认为CSS Sprites能减少图片的字节,我曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和。

CSS Sprites缺点

诚然CSS Sprites是如此的强大,但是也存在一些不可忽视的缺点。

1.在图片合并的时候,你要把多张图片有序的合理的合并成一张图片,还要留好只够的空间,防止板块内不会出现不必要的背景,否则可能会出现出现干扰图片的情况;这些还好,做痛苦的是在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂;

2.CSS Sprites在开发的时候比较麻烦,你要通过photoshop或其他工具测量计算每一个背景单元的精确位置,这是针线活,没什么难度,但是很繁琐;不过网上已经有高手开发出“CSS Sprites 样式生成工具”,大家可以尝试一下。

3.CSS Sprites在维护的时候比较麻烦,sprites是一般双刃剑,如果页面背景有少许改动,一般就要改这张合并的图片,无需改的地方最好不要动,这样避免改动更多的css,如果在原来的地方放不下,有只能(最好)往下加图片,这样图片的字节就增加了,因为每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐,而且重新算图片的位置(尤其是这种上千px的图)也是一件颇为不爽的事情。当然,在性能的口号下,这些都是可以克服的。

4.由于图片的位置需要固定为某个绝对数值,这就失去了诸如center之类的灵活性。

最新文章

  1. spring声明式事务管理总结
  2. 高阶Laplace曲面形变算法(Polyharmonic Deformation)
  3. MySQL的create table as 与 like区别
  4. Windows 10下Chrome不能启动的问题
  5. Nginx系列~负载均衡服务器与WWW服务器的实现
  6. ACE的Socket初步
  7. 处理IIS报“由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面”
  8. Machine Learning—Linear Regression
  9. Java创建对象的几种方式
  10. Hadoop技术在商业智能BI中的应用
  11. js_4_函数
  12. IdentityServer4之Implicit(隐式许可)
  13. Red hat查找命令所属的rpm包
  14. 【译】第六篇 SQL Server安全执行上下文和代码签名
  15. jexus linux x64 [专业版] 安装和配置https
  16. 【问题与解决】showModalDialog is not defined 的解决方案
  17. .net core Identity集成IdentityServer4 (1)基本操作
  18. A* search算法
  19. 头皮溢脂性皮炎推荐联合治疗:采乐50ml+希尔生100g(请看详情页)维生素B2维生素B6
  20. 记一次HashMap面试

热门文章

  1. ios-NSString总结
  2. C++11 新特性之 Lambda表达式
  3. 20种常用的DOS命令小结
  4. VS2012新建项目出错:未找到与约束
  5. scala Option 里的 orNull orElse getOrElse 区别和使用
  6. 小白日记7:kali渗透测试之主动信息收集-发现(一)--二层发现:arping/shell脚本,Netdiscover,scapy
  7. cocos2d-x lua 使用自定义消息EventCustom
  8. javaweb学习总结八(xml约束DTD)
  9. 【数论,找规律】Uva 11526 - H(n)
  10. 直接查数据导出xls