css sprites直译过来就是CSS精灵。一般被解释为“CSS图像拼合”或“CSS贴图定位”。其实就是经过将多个图片融合到一张图里面,而后经过CSS background背景定位技术技巧布局网页背景。这样作的好处也是显而易见的,由于图片多的话,会增长http的请求,无疑促使了网站性能的减低,特别是图片特别多的网站,若是能用css sprites下降图片数量,带来的将是速度的提高。css
css sprites是什么通俗解释:CSS Sprites其实就是把网页中一些背景图片整合拼合成一张图片中,再利用DIV CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position能够用数字能精确的定位出背景图片在布局盒子对象位置。html
一、适合:通常小图标素材
小的图标ico类素材,通常图标很小十多像素几十像素的宽度高度,这种适合拼合成一张图实现sprites background背景定位布局。多小ico太多天然加载网页时瞬间会消耗些http iis连接数,但很快加载完又会释放。es6
二、不适合:大图大背景
大背景通常用于网页背景,拼合时,设置为网页背景时全部背景都会显示出来。大图拼接拼合会增大图片大小,网络带宽很差的访问者访问时因为背景图大文件大会加载稍慢些,因此大图不推荐拼接拼合来使用css sprites背景定位布局。网络
三、sprites适合推荐小结
通常此sprites拼合布局用于局部小盒子布局不适合大背景大布局背景使用。好比小局部布局小图标背景、小导航背景等DIVCSS布局。工具
一、sprites优点:
若干小图标拼合成一张图后布局,减小http iis请求数,对于大战大流量网站来讲隐形优点很显然的,从而隐形地提高了网站性能。对于大流量网站来讲原本http请求数比较宝贵,使用DIV+CSS Sprites这样能够大大的提升了页面的性能,这是CSS Sprites最大的优势,也是其被普遍传播和应用的主要缘由,同时也减小图片文件数目。布局
二、sprites缺点
在图片合并的时候,你要把多张图片有序的合理的合并成一张图片,还要留好只够的空间,防止板块内不会出现没必要要的背景,若是留空间或拼合位置不合适,在布局时容易出现布局这个盒子对象时,设置背景出现拼合相邻图片,干扰图片的状况;性能
CSS Sprites在开发的时候比较麻烦,你要经过photoshop(PS)或其余工具测量计算每个背景单元的精确位置,这是针线活,没什么难度,可是很繁琐;网站
CSS Sprites在维护的时候比较麻烦,sprites是通常双刃剑,若是页面背景有少量改动,通常就要改这张合并的图片,无需改的地方最好不要动,这样避免改动更多的css,若是在原来的地方放不下,有只能(最好)往下加图片,这样图片的字节就增长了,由于每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐,并且从新算图片的位置(尤为是这种上千px的图)也是一件颇为不爽的事情ui
因为图片的位置须要固定为某个绝对数值,这就失去了诸如center之类的灵活性。url
三、DIVCSS5推荐小结
犹豫拼接图片须要必定经验技巧(作实践便可快速掌握)、测量定位数值、修改不是那么灵活等缘由,通常小网站站、小流量网站、通常企业网站不是很推荐使用CSS Sprites,由于使用CSS Sprites会比普通单个背景图片布局要耗费时间和精力,因此不是很推荐小站。但这个布局技巧也必需要学会掌握灵活布局才是目的。小站HTTP请求数丰富这点拼接其实也起不来什么优点反而会浪费宝贵时间。相反大网站大流量网站推荐使用,这样比较值得。
sprites案例图片素材:
实例代码:
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1, maximum-scale=1,minimal-ui, user-scalable=no"/> <style> .sprites div { margin: 5px; } .sprites span { float: left; width: 20px; height: 20px; background-image: url(sprite.png); background-size: 60px 40px; } .sprites1{ background-position: 0 0; } .sprites2{ background-position: -20px 0; } .sprites3{ background-position: 0 -20px; } .sprites4{ background-position: -20px -20px; } .sprites5{ background-position: -40px 0; } .sprites6{ background-position: -40px -20px; } </style> </head> <body> <div class="sprites"> <div><span class="sprites1"></span>付款图标</div> <div><span class="sprites2"></span>删除图标</div> <div><span class="sprites3"></span>存款图标</div> <div><span class="sprites4"></span>粘贴图标</div> <div><span class="sprites5"></span>笑脸图标</div> <div><span class="sprites6"></span>编辑图标</div> </div> </body> </html>
sprites实例效果:
说明:背景background-position有两个数值,前一个表明靠左距离值(可为正可为负),第二个数值表明靠上距离值(可为正可为负)。当为正数时,表明背景图片做为对象盒子背景图片时靠左和靠上多少距离多少开始显示背景图片;当为负数时表明背景图片做为盒子对象背景图片,将背景图片拖动超出盒子对象左边多远,拖动超出盒子对象上边多远开始显示此背景图片。