[css] 第17天 解释下 CSS sprites的原理和优缺点分别是什么?
haizhilin2013 opened this issue · 19 comments
第17天 解释下 CSS sprites的原理和优缺点分别是什么?
我来说下我的观点
原理:
多张图合并成一张图
优点&解决的问题
- hover效果,如果是多个图片,网络正常的情况下首次会闪烁一下。如果是断网情况下,就没图片了。sprites 就很好的解决了这个问题(第一次就加载好了)。
- 合并了请求数
- 制作帧动画方便
缺点
- 位置不好控制,有时候容易露底。。比如说3030的按钮,图片只有1212保不齐就漏出其他图片了。
- 合成时候比较费时(有工具代替)
- 位置计算费时(有工具代替)
- 更新一部分的时候,需要重新加载整个图片,缓存失效。
在http2下,雪碧图最大的优势减少请求数已经荡然无存。。
原理:多张小图标合并成一张图片,利用background-position来显示相对应的图标
优点:请求数量少,预先加载图标
缺点:难管理,资源大
CSS sprites 的原理是将许多小图标或小图片拼成一张大图,然后利用 background-position
+ 固定的宽高来显示对应大图位置的图片作为背景。Amazon 的图标就是用的 CSS Sprites 拼在一张大图上。
由于合并成了一张图,所以好处就是在于请求数减少。而缺点就在于如果图片拼位置出现错误,在显示的时候就有可能显示不完整或者错位。
维护起来是真麻烦
在http2下,雪碧图最大的优势减少请求数已经荡然无存。。
为什么?
HTTP2多路复用,并行传输,多张图片也只需建立一次HTTP请求
原理:把项目需要用到的图标合并成一张大图,在使用的时候通过position定位来展示指定的图标
优点:大大减少了请求次数
确定:定位不太好控制,多用于小图标的展示。
1.简介
CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式。它允许将一个页面涉及到的所有零星图片都包含到一张大图中, 利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位, 访问页面时避免图片载入缓慢的现象。
2.优点
(1)CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;
(2)CSS Sprites能减少图片的字节;
(3)CSS Sprites解决了网页设计师在图片命名上的困扰,只需对一张集合的图片命名,不需要对每一个小图片进行命名,从而提高了网页制作效率。
(4)CSS Sprites只需要修改一张或少张图片的颜色或样式来改变整个网页的风格。
3.缺点
(1)图片合并麻烦:图片合并时,需要把多张图片有序的合理的合并成一张图片,并留好足够的空间防止版块出现不必要的背景。
(2)图片适应性差:在高分辨的屏幕下自适应页面,若图片不够宽会出现背景断裂。
(3)图片定位繁琐:开发时需要通过工具测量计算每个背景单元的精确位置。
(4)可维护性差:页面背景需要少许改动,可能要修改部分或整张已合并的图片,进而要改动css。在避免改动图片的前提下,又只能(最好)往下追加图片,但这样增加了图片字节。
原文链接:https://blog.csdn.net/sunnyjingqi/article/details/83064872
原理:将页面中所有用到的图片都剪切到一张图片上。
优点:减少请求;便于改变整个样式,只需要换一张图片即可
缺点:
- 不利于修改,每当你要增加一张图片时,还要从新剪切一张图出来;
- 定位图片位置麻烦
现在基本没见谁用过这东西了把
我来说下我的观点
原理:
多张图合并成一张图
优点&解决的问题
hover效果,如果是多个图片,网络正常的情况下首次会闪烁一下。如果是断网情况下,就没图片了。sprites 就很好的解决了这个问题(第一次就加载好了)。
合并了请求数
制作帧动画方便
缺点
位置不好控制,有时候容易露底。。比如说3030的按钮,图片只有1212保不齐就漏出其他图片了。
合成时候比较费时(有工具代替)
位置计算费时(有工具代替)
更新一部分的时候,需要重新加载整个图片,缓存失效。
俗称精灵图
原理:把所有的图片放到一张图片上进行加载,利用background-position进行图片定位
优点:网页加载速度快
缺点:合并麻烦,搞不好会错位
现在webpack把这些缺点都解决了吧
原理
CSS 图像合并(Image sprites) 技术,亦作 CSS 贴图定位、图像精灵(sprite),被运用于众多使用大量小图标的网页应用之上
它可取图像的一部分来使用, 利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位
访问页面时避免图片载入缓慢的现象,使得使用一个图像文件替代多个小文件成为可能
注意: 当使用 HTTP/2 时,使用多个小流量请求实际上可能更为带宽友好
优点
- CSS Sprites能减少网页的http请求,从而大大的提高页面的性能
- CSS Sprites能减少图片的字节
- CSS Sprites解决了网页设计师在图片命名上的困扰,只需对一张集合的图片命名,不需要对每一个小图片进行命名,从而提高了网页制作效率
- CSS Sprites只需要修改一张或少张图片的颜色或样式就能改变整个网页的风格
缺点
- 图片合并麻烦:图片合并时,需要把多张图片有序的合理的合并成一张图片,并留好足够的空间防止版块出现不必要的背景
- 图片适应性差:在高分辨的屏幕下自适应页面,若图片不够宽会出现背景断裂
- 图片定位繁琐:开发时需要通过工具测量计算每个背景单元的精确位置
- 可维护性差:页面背景需要少许改动,可能要修改部分或整张已合并的图片,进而要改动css。在避免改动图片的前提下,又只能(最好)往下追加图片,但这样增加了图片字节
已经好多年没用过了,雪碧图
原理:通过调整background-position数值,使背景图片以不同的样貌出现,图片整体没有改变
优点:能够提升网站性能,大量图片合成一个图片,大大减少了Http的连接数
缺点:维护性不高,而且由于图片的位置需要固定为某个绝对值,就失去了诸如center一样的灵活性,必须限制盒子的大小才能使用,否则会出现干扰图片的情况
CSS sprites(CSS 精灵)是一种优化网页加载速度的技术。它的原理是将多个小图标或背景图像合并为一个大图像,并使用 CSS 的 background-position
属性来控制显示其中的特定部分。
优点:
- 减少HTTP请求:通过将多个图像合并为一个,减少了网页加载时需要发起的HTTP请求次数,从而提高了页面加载速度。
- 提高性能:由于只需要加载一个大图像,而不是多个小图像,因此减少了服务器和客户端之间的通信量,从而提高了性能。
- 减少带宽消耗:合并后的大图像的文件大小通常比多个小图像的总和要小,减少了带宽消耗。
缺点:
- 难以维护:合并图像后,如果需要修改其中一个图标或背景图像,需要重新生成整个精灵图,并更新相应的 CSS。这增加了维护的复杂性。
- 图像裁剪问题:由于使用了
background-position
来控制显示特定部分,因此如果图像的尺寸或位置发生变化,需要调整相应的 CSS,可能会导致图像裁剪不准确。
总的来说,CSS 精灵是一种有效的优化技术,可以减少HTTP请求和提高页面加载性能。然而,它也需要权衡维护复杂性和图像裁剪问题。在实际应用中,需要根据具体情况和需求来决定是否使用 CSS 精灵。
1、CSS sprites的原理:
将许多小图标或者小图拼成一张大图,然后利用background-position + 固定的宽高来显示对应的图标
2、优点:
请求数量减少;预先加载图标;制作帧动画方便
3、缺点:
位置不好控制;更新一部分的时候,需要重新加载整个图片