CSS Sprites的概念、原理、适用范围和优缺点

操作方法

  • 01

    CSS Sprites概念 CSSSprites在国内很多人叫css精灵,是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。对于当前网络流行的速度而言,不高于200KB的单张图片的所需载入时间基本是差不多的,所以无需顾忌这个问题。 加速的关键,不是降低质量,而是减少个数。传统切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算。客户端每显示一张图片都会向服务器发送请求。所以,图片越多请求次数越多,造成延迟的可能性也就越大。 CSS Sprites技术不新鲜,早在2005年 CSS Zengarden 的园主 Dave Shea 就在 ALA 发表对该技术的 详细阐述 。原先只在CSS玩家之间作为一种网页制作方法流传,后来出来个 14 Rules for Faster-Loading Web Sites , 技术人员之间竞相传阅,其中第一条规则Make Fewer HTTP Requests就提到CSS Sprites。于是这个小妖精就火了起来,甚至出现了在线生成工具,势不可挡也。近来国内很多blog都提到CSS Sprites,最著名的例子莫过于http://www.google.co.kr/ 下方的那几个动画。最新发布的YUI中,也是使用到CSS Sprites,几乎都有的CSS装饰图都被一个 40×2000的图 包办。社交大站Facebook最近也使用了一个 22×1150的图片 承担了所有icon.一时间,CSS Sprites无处不在。

  • 02

    原理 我们知道,自CSS革命以降,HTML倾向于语义化,在一般情况下不再在标记里写装饰性的内容而是把呈现的任务交给了CSS。GUI是缤纷多彩的,少不了各种漂亮的图来装点。新时代的生产方式是,在HTML布满各种各样的钩子(hook),然后交由CSS来处理。在需要用到图片的时候,现阶段是通过CSS属性background-image组合background-repeat, background-position等来实现(题外话:为何我提现阶段,因为未来浏览器若支持content则又新增另外的实现方法)。我们的主角是,你一定猜到了,就是background-position。通过调整background-position的数值,背景图片就能以不同的面貌出现在你眼前。其实图片整体面貌没有变,由于图片位置的改变,你看到只该看到的而已。就好比手表上的日期,你今天看到是21,明天看到是22,是因为它的position往上跳了一格。所以你也大概了解到,CSS Sprites一般只能使用到固定大小的盒子(box)里,这样才能够遮挡住不应该看到的部分。

  • 03

    css sprites 适用范围: 1,需要通过降低http请求数完成网页加速。 2,网页中含有大量小图标。或者,某些图标通用性很强。 3,网页中有需要预载的图片。主要是a与a:hover背景图这种关系的。如果a与a:hover的背景图分别加载,那么,就会出现用户鼠标移到某个按钮上,按钮的背景突然消失再出来,产生“闪烁”,如果按钮文字色与大背景相同或相近,就更囧了,有可能让人产生按钮“消失”了的错觉。

  • 04

    需要满足的条件 在网页设计中,通过这项技术拼合在一起的图片最好有一项规律。定宽或者定高。最好是宽高都能定下来。需要平铺的图片,显然不适合sprite。 如上图的buttons,就属于定宽定高的情况。 定宽情况下,则可平行排列若干小图片。定高,则纵向排列小图片。 若背景既不定宽,也不定高情况下强行使用css sprites技术,则容易产生“不应该出现的图片出现在页面上”的状态。若是“强行定高”,也将非常不利于日后的维护。

  • 05

    优点 我们从前面了解到,CSS Sprites为什么突然跑火,跟能够提升网站性能有关。显而易见,这是它的巨大优点之一。普通制作方式下的大量图片,现在合并成一个图片,大大减少了HTTP的连接数。HTTP连接数对网站的加载性能有重要影响。

  • 06

    缺点 至于可维护性,这是一般双刃剑。可能有人喜欢,有人不喜欢,因为每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐。而且算图片的位置(尤其是这种上千px的图)也是一件颇为不爽的事情。当然,在性能的口号下,这些都是可以克服的。 由于图片的位置需要固定为某个绝对数值,这就失去了诸如center之类的灵活性。 前面我们也提到了,必须限制盒子的大小才能使用CSS Sprites,否则可能会出现出现干扰图片的情况。这就是说,在一些需要非单向的平铺背景和需要网页缩放的情况下,CSS Sprites并不合适。YUI的解决方式是,加大图片之间的距离,这样可以保持有限度的缩放。

(0)

相关推荐

  • CSS 图像精灵怎么用(css sprites定位技术)

    我们在做前端页面的时候,网页中通常包含有很多小图标,这就用到了css sprites技术.把所有小图标放到一张图上,这样可以减少对服务器的请求次数.提高我们的访问速度.CSS 图像精灵的优缺点是什么? ...

  • 25款最佳网页设计神器分享

    对于网页设计师而言,Photoshop是必不可少的工具。而事实上,Photoshop除了其原有的基础功能之外,我们还可以给PS配置许多功能强大的PS插件,这些PS插件可以让平时复杂繁琐的操作变得更加简 ...

  • TexturePacker怎么使用

    TexturePacker是一款把若干资源图片拼接为一张大图的工具.网页设计师前台制作css的时候,为了提高载入速度,往往把很多小图拼接成一张大图,一次载入,减少I/O,提高速度.这个好懂吧. 所以不 ...

  • TexturePacker怎么用?TexturePacker使用教程图解

    TexturePacker是一款把若干资源图片拼接为一张大图的工具.网页设计师前台制作css的时候,为了提高载入速度,往往把很多小图拼接成一张大图,一次载入,减少I/O,提高速度.这个好懂吧. 所以不 ...

  • Web开发者和设计师必须要知道的 iOS 8 十个变化

    喜大普奔,喜极而泣, 概述 简介 iOS 8 上的 Safari 的更新 iPhone 6 和 iPhone 6 Plus 新 Api 支持 Safari 新功能和支持 iOS 8 原生优化 Safa ...

  • 伪元素怎么使用呢?

    对于一个使用 HSL 表示的颜色,我们只需要改变 L (亮度)的值,就可以得到一个更亮一点或者更暗一点的颜色. 操作方法 01 这里要科普一下颜色值的小知识.我们熟知的颜色表示法除了 #fff ,rg ...

  • 教你如何做好SEO优化中的前端优化

    网站的速度是很多人都面临的问题,其实许多网站,都没有特意的去优化加载速度,对于一个网站来说,加速不但提高了用户体验(如果一个网站在几秒内没 有打开,大多数用户选择的是关闭而非等待),而且对于SEO的流 ...

  • 如何提高网页加载速度

    操作方法 01 虽然现在的网络带宽在逐步提高,但是随着网络信息也越来越广泛,对于如何加快网页打开速度仍然困扰着网页策划者,相信任何一个站长都希望尽可能的减少页面载入时间,任何搜索引擎都希望为用户提供一 ...

  • 如何在HTML中设置网页背景颜色

    想在HTML中设置网页背景颜色,你只需要在标签中的"body"元素做些简单的更改就行了.这些步骤根据你想要的效果而略有不同.本文会教你如何设置单色背景.图片背景.渐变背景或动态变色 ...