CSS雪碧

article/2025/3/10 10:30:08

CSS雪碧

CSS雪碧 即CSS Sprites,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分。

原理

CSS雪碧的基本原理是把你的网站上用到的一些图片整合到一张单独的图片中,从而减少你的网站的HTTP请求数量。该图片使用CSS background和background-position属性渲染,这也就意味着你的标签变得更加复杂了,图片是在CSS中定义,而非<img>标签。
一个简单的例子:
一张图片作出一个按钮的三个状态

一张图片作出一个按钮的三个状态

一个链接用CSS做成按钮的样式,我们可以使用同一张图片,完成按钮的三个状态,a:link,a:hover,a:active。
<a class="button" href="#">链接</a>
加入右侧的图片为:65px * 26px的三个按钮图拼合而成的图片button.png,从上到下一次为按钮的普通、鼠标滑过、鼠标点击的状态。则可以使用CSS进行定义。
a {
display:block; width:65px; height:26px; lineheight:26px; /*定义状态*/
text-indent:-2012px; /*隐藏文字*/
background-image:url(button.png) no-repeat; /*定义背景图片*/
background-position:0 0; /*定义链接的普通状态,此时图像显示的是顶上的部分*/}
a:hover {background-position:0 26px; /*定义链接的滑过状态,此时显示的为中间部分*/}
a:active {background-position:0 52px; /*定义链接的普通状态,此时显示的是底部的部分*/}
初学的朋友可以试试效果。
而更多的CSS雪碧,图片更复杂,背景定位更精确。可能会用到大量的数值,如:background:url(nav.png) no-repeat -180px 24px; 来达到更精确的定位。

2优点

减少加载网页图片时对服务器的请求次数

可以合并多数背景图片和小图标,方便在任何位置使用,这样不同位置的请求只需要调用一个图片,从而减少对服务器的请求次数,降低服务器压力,同时提高了页面的加载速度,节约服务器的流量。

提高页面的加载速度

sprite 技术的其中一个好处是图片的加载时间(在有许多 sprite 时,单张图片的加载时间)。由所需图片拼成的一张 GIF 图片的尺寸会明显小于所有图片拼合前的大小。单张的 GIF 只有相关的一个色表,而单独分割的每一张 GIF 都有自己的一个色表,这就增加了总体的大小。因此,单独的一张 JPEG 或者 PNG sprite 在大小上非常可能比把一张图分成多张得来的图片总尺寸小。

减少鼠标滑过的一些bug

IE6不会主动预加载鼠标滑过即a:hover中的背景图片,所以,如果使用多张图片,鼠标滑过会出现闪白的现象。使用CSS雪碧,由于一张图片即可,所以不会出现这种现象。

3不足

CSS雪碧的最大问题是内存使用

除非这个雪碧图片是被非常小心的组织,你就会最终使用大量的无用的空白。一个例子是来自于WHIT TV的网站。注意这是一个1299×15,000像素的PNG图片。它也被压缩的很好——实际下载大小只有大概26K — 但是浏览器并不会渲染压缩后的图片数据。当这个图片被下载并被解压缩之后,它将占用差不多75MB的内存 (1299 * 15000 * 4)。如果这个图片并没有使用alpha透明,它将会被优化至1299 * 15000 * 3,但是要在损失渲染速度的情况下。即使那样,我们也会讨论55MB。这张图片的大部分其实就是 空白,那里什么都没有,没没有任何有用的内容。只是加载 WHIT主页 就会导致你的浏览器的内存占用上升到至少75+MB,仅仅是因为那一张图片。(PS:遗憾的是,该网站最近已经改版,文中提到的图片已经不存在了)

影响浏览器的缩放功能

如果一个使用CSS雪碧的页面使用一些浏览器提供的整页缩放功能缩放了,浏览器就需要做一些额外的工作来纠正这些图片边缘的行为——基本上来说,是为了避免雪碧中相邻的图片被“露进来”。这对于小图片没有什么问题,但是对于大图片会是一个性能下降。

拼图维护比较麻烦

拼合这么多图片,需要耐心。同时还要时刻思考如何在使用这个图片是不会产生相互的影响。将又瘦又高的图片和又宽又矮的图片放到一起时,不容易操作。如果要修改雪碧中的一个图片,你就要修改整张图片,这无疑会增大工作量。

使CSS的编写变得困难

如果CSS雪碧足够复杂,则大大增加了CSS的代码量和难度,让维护和修改变得困难起来。

CSS 雪碧调用的图片不能被打印

CSS 雪碧调用的图片不能被打印,除非在@media中特别添加 print声明。

错误得使用 Sprites 影响可访问性

一些刚入门的开发人员会为了节省 HTTP 请求数(这是使用 CSS Sprite 一直强调的好处)而把所有的图片都当背景图片来处理 – 甚至是那些传达重要信息的图片。结果会导致一个缺乏可访问性的网站,也会降低 HTML 中 title 和 alt 的潜在益处。
因此,CSS sprite 本身没错,而且也不会引发可访问性问题(事实上,正确得使用会提高可访问性)。但是不分对错得过度使用 sprite 会阻碍具有可访问性和生产率方面的网页建设进程。

4实用技巧

不要等到你完成切片之后才开始sprite

如果你边切图边写CSS,然后等你完成了整个网站之后再来拼接这些图片到一个Sprite中,你就不得不完全重写你的CSS,你也必须要花费很多的时间来用PS拼接大量的图片——这是件令人倍感纠结的事情。但是如果边切图边整合,就会比较容易些。

把图片放到它要显示的地方的相对的地方

这个小技巧貌似比较难理解。我直到创建一个比较大的sprite的时候才理解到这一点。比如,如果我们希望一个图片出现在一个元素的左侧:将那个图片放到sprite图片的右边(本文开始的那个sprite图片)。这样的话,当你通过CSS移动背景图片的位置的时候,基本上不可能有其它的小图片意外的出现在它的附近。使用Sprite的时候常常遇到的一个问题是图片会出现在它不该出现的位置。

定位时避免使用bottom或right等

当使用CSS sprite的时候,只用background-position: bottom -300px或background-position: right -200px;非常容易。这刚开始的时候是可行的,但是问题是,当你在宽度上或高度上扩展相关sprite图片的时候,原先设置的位置可能是错的,因为那个图片已经不再Sprite图片的底部或右部了。使用确切的位置来避免这个问题。

给每个图片足够的空间

就像你在本文顶部的实例图片看到的那样,那些小图片都被预留了足够的空间。为什么不把他们塞到一块来让sprite图片更小呢? 因为使用这些图片的元素通常都会有大量的内容而且可能会需要扩展的间距,以至于其它图片不会意外出现。

不用担心Sprite图片的像素大小

如果你的网站经过良好的设计,那么你将会有一大堆的图片来整合进到sprite里面,这样你就需要你个非常大的sprite来恰当的放置这些图片。这是很不错的。sprite里的空白不会占用太多的文件小。国外某购物网站上使用的Sprite图片有1,000px×2,000 px那么大,但是图片的大小仅仅 16.7kb!


来自:http://baike.baidu.com/link?url=_43cHAqw9-IJcChQOoxmyNo5zmMpskfOc43BenLorI1DyIKdAsFQvjzRDiVtrII1a42E_5jSDMO4D5jedzB8nK



http://chatgpt.dhexx.cn/article/KF614eRU.shtml

相关文章

19-CSS sprites (css 精灵)实现教程

一、Css Sprites介绍 CSS Sprites : css精灵&#xff0c;css图片整合技术&#xff0c;css雪碧; 定义∶将导航背景图片&#xff0c;按钮背景图片等有规则的合并成一张背景图&#xff0c;即将多张图片合为一张整图&#xff0c;然后用background-position来实现背景图片的定位技术…

CSS3—雪碧图和滑动门

一、CSS Sprite&#xff08;雪碧图&#xff09; CSS Sprite也叫CSS精灵、CSS雪碧图&#xff0c;是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去&#xff0c;这样一来&#xff0c;当访问该页面时&#xff0c;由从前的多次请求变为一…

精灵图,雪碧图的应用

1.什么是精灵图&#xff1f; 精灵图就是一张图片中显示了页面中多个地方使用的图片&#xff0c;如 2.为什么使用精灵图&#xff1f; 使用精灵图可以减少加载图片的次数&#xff0c;当引入一次图片后&#xff0c;后面再使用就不用再请求资源&#xff0c;提高效率 3.怎么使用精…

【web前端性能优化】12.css sprite(图片精灵)-雪碧图实现原理

CSS雪碧 即CSS Sprite&#xff0c;也有人叫它CSS精灵&#xff0c;是一种CSS图像合并技术&#xff0c;该方法是将小图标和背景图像合并到一张图片上&#xff0c;然后利用css的背景定位来显示需要显示的图片部分。 举个应用的实例&#xff1a;这是淘宝网的分类导航实例&#xff…

练习京东顶部导航条、背景、渐变、按钮练习(雪碧图)、渐变

练习 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content&qu…

DaZeng:雪碧图(精灵图)的使用

雪碧&#xff08;精灵&#xff09;图 要求显示效果&#xff1a;&#xff08;轮播图导航栏效果&#xff09; 页面结构&#xff1a; <ul class"list-box"><li></li><li></li><li></li><li></li><li><…

a与雪碧图在导航处的使用

a与雪碧图在导航处的使用 实现效果为鼠标未放上之前为默认颜色&#xff0c;放上之后变成可以选中的红色。 选中前的效果&#xff1a; 选中后的效果&#xff1a; 设置的HTML源代码为&#xff1a; 设置未选中前的CSS代码&#xff1a; 设置选中前的a颜色以及div中的雪碧图类型…

【Unity ShaderGraph使用雪碧图制作导航光效效果】

效果&#xff1a; ShaderGraph的制作&#xff1a; shader中uv数和雪碧图的uv数对上就能出效果。 直接上代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class TurnDirEffectController : …

css超链接样式+雪碧图实现导航

一、CSS链接的四种状态【演示前清除浏览器记录】 1.1 a:link 普通的、未被访问的链接&#xff1f;&#xff1f;&#xff1f; 1.2 a:visited 用户已被访问的链接&#xff1f;&#xff1f;&#xff1f; 1.3 a:hover 鼠标指针位于链接的上方 1.4 a:active 链接被点…

Apache Flink Meetup 8.7 深圳站,企业实践 + 1.14 新特性预览

时隔 10 个月&#xff0c;Apache Flink Meetup 又来到了深圳这个与 Flink 契合度很高的城市。正如改革和创新是深圳的标签&#xff0c;Apache Flink 给技术开发者们带来的&#xff0c;也是摒弃旧的 “批处理” 思维&#xff0c;迎接新的 “流批一体” 趋势。那么本次的 Meetup …

JUST技术:利用轨迹拼接分析实时可达区域

如何快速得知从你的位置开始出发&#xff0c;在当前的交通状况下&#xff0c;5分钟之内能够抵达的空间区域范围&#xff1f;当你掏出手机打车时&#xff0c;出租车调度平台应该通知哪些范围的车主进行接单&#xff1f;本文将带来被国际著名数据库和数据挖掘会议DASFAA 2020 &am…

基于在线地图的轨迹跟踪服务_JUST技术:利用轨迹拼接分析实时可达区域

作者&#xff1a;JUST团队-李瑞远 如何快速得知从你的位置开始出发&#xff0c;在当前的交通状况下&#xff0c;5分钟之内能够抵达的空间区域范围&#xff1f;当你掏出手机打车时&#xff0c;出租车调度平台应该通知哪些范围的车主进行接单&#xff1f;本期技术前沿&#xff0c…

CCF 区块链国际会议 统计 有哪些接收区块链论文的会议 (最全)

投稿截止日期排序 区块链相关会议和论文信息&#xff1a;元宇宙最新报告 1. USENIX ATC CCF等级&#xff1a;A 最近截止日期&#xff1a;2022-01-06 会议全称&#xff1a; USENIX Annual Technical Conference 是否有区块链Topics&#xff1a;否 录用率&#xff0c;接收比…

【计算机视觉】会议投稿相关推荐

一个call for paper的站点&#xff0c;small推荐给我的&#xff1a;http://www.wikicfp.com/cfp/ 能够加入自己关注的会议&#xff0c;会生成对应的deadline列表。非常方面~ 还有一个是中科院的CCF推荐排名&#xff1a;http://www.ccf.org.cn/sites/ccf/paiming.jsp&#xff0c…

中科院计算所在可信大数据软件技术方面的研究工作【DOC+PPT下载】

http://pan.baidu.com/s/1qWOCMxm 清单&#xff1a; 中科院计算所在可信大数据软件技术方面的研究工作.doc 【本文doc文档】 中科院计算所在可信大数据软件技术方面的研究工作.ppt 【本文ppt演讲稿】 PS&#xff1a;前段时间接到任务&#xff0c;对中科院计算所在可信大数…

蚂蚁金服ATEC城市峰会上海举行,三大发布迎接金融科技2019

2019年1月4日&#xff0c;蚂蚁金服ATEC城市峰会以“数字金融新原力&#xff08;The New Force of Digital Finance&#xff09;”为主题在上海举办。稠州银行副行长程杰、蚂蚁金服副总裁刘伟光、蚂蚁金服金融科技产品技术总监杨冰、蚂蚁金服创新科技部资深总监李杰力等出席本场…

论文阅读《Multi-view Multi-behavior Contrastive Learning in Recommendation》

多行为推荐&#xff08;MBR&#xff09;旨在联合考虑多种行为以提高目标行为的推荐效果。我们认为 MBR 模型应该&#xff1a;&#xff08;1&#xff09;对用户不同行为之间的粗粒度共性进行建模&#xff0c;&#xff08;2&#xff09;在多行为建模中同时考虑局部的序列视图和全…

技术动态 | 不确定性知识图谱的表示和推理

本文转载自漆桂林知乎。 作者 | 张嘉韬、漆桂林、吴天星 文章链接 | https://zhuanlan.zhihu.com/p/369068016

【全年汇总】2023年CCF数据库/数据挖掘/内容检索会议截稿时间汇总(持续更新)

本博文是根据CCF会议推荐的数据库&#xff0f;数据挖掘&#xff0f;内容检索领域相关会议目录撰写。 一、截稿时间总览 截稿时间的总时间轴内容将会持续更新...... 往年投稿及录用情况及链接详见图片后面的内容。 二、会议详细目录 由于一些会议的投稿时间还没公开&#xff0c…

多视图多行为对比学习推荐系统

嘿&#xff0c;记得给“机器学习与推荐算法”添加星标 作者&#xff1a;吴贻清 单位&#xff1a;中科院计算所 研究方向&#xff1a;多行为推荐 多行为推荐&#xff08;MBR&#xff09;旨在联合考虑多种行为以提高目标行为的推荐效果。我们认为 MBR 模型应该&#xff1a;&…