CSS精灵图的原理与使用方法介绍【前端开发】,网页前端开发培训

68 阅读6分钟

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

html5

开源分享:docs.qq.com/doc/DSmRnRG…

当用户访问一个网站时,需要向服务器发送请求,网页上的每张图像都要经过一次请求才能展现给用户,然而,一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接受和发送请求,这将大大降低页面的加载速度。为了有效地减少服务器接受和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术(也称 CSS Sprites、CSS雪碧)。

由于精灵图最早诞生之初,不像位图一样是整张转换数据后加载出来的,而是“悬浮”于帧缓冲中数据之上,不影响其中数据,就像幽灵或精灵一样,因此得名精灵图

精灵图要解决的是下面的这个问题:

图中左侧是一个浏览器,右侧是一个服务器,假设我们正在使用浏览器,向某网站发起了请求,这个请求可能是请求访问该网站的官网,此时从网络角度看,我们发起的是HTTP请求,HTTP代表了网络协议,于是服务器收到请求后,会返回给我们需要的网页,此时重点来了

服务器收到请求后,从它的内部搜索对应的HTML文档,在这个例子中,它搜索的是网站的官网HTML页面,与此同时,如果该页面本身有图像,那么这些所有的图像会以一个一个的url的形式返回,而后在进一步加载中,每一个url可能再发起一次HTTP请求,如果此时使用的是非持续的HTTP连接,那么TCP带来的RTT时延是很可观的,因此为了减少时延,精灵图诞生了:

精灵图把网页中所需的所有的小图片,都集成在一张图上,通过修改图片的定位,达到一张图顶n张图的效果,加载时只需要加载一张图片即可!

最后的最后,强调一下,精灵图不是一项新的功能,而是一个新技术或新思想,它的实现是由旧的功能解决的


II.精灵图的实现方式:拼出你的名字


那么精灵图是怎么实现的呢?这里举一个小例子:

我先给一张图片:

好了,那么接下来我提出需求:

仅用上面的一张图,把你的名字的拼音全拼显示在页面上

那么第一时间,如果有前端CSS基础你想到的方法是什么呢

答案是:背景图片 + 背景图片定位!

详细的步骤可以分为下面的两步

1️⃣ 首先,我们把图片放入一个指定大小的“盒子”中做背景,这个盒子的大小设置的和图片上的一个单元一样大以本例来说,盒子的尺寸就是一个图片上一个字母的大小

2️⃣ 而后通过背景图片定位,我们把该单元刚好定位到这个盒子中,此时就只有该单元被显示了出来,其他单元将由于盒子的大小有限而不会被显示

上图是我对实现步骤的一个图解,其中,最里面蓝色的和最外面黄色的区域,其实是一张图片,蓝色区域是黄色的整图的一个单元,而红色是我们定义的盒子,可以看到盒子的大小应该与小单元一致(这里盒子稍微大一点,是由于方便大家观看,实际中二者应该是重合关系)

好了,那么现在再介绍一下在网页中,坐标轴与实际中的区别

这区别使我们在做精灵图的定位时,要注意取值可能要加一个负号!

最后简单放一下上面显示你的名字的部分源码:

.l{

background-img : url(pic.jpg);

background-position : -1px -274px;

}

.o{

background-img : url(pic.jpg);

background-position : -1px -274px;

}

.b{

background-img : url(pic.jpg);

background-position : -1px -274px;

}

.s{

background-img : url(pic.jpg);

background-position : -1px -274px;

}

.t{

background-img : url(pic.jpg);

background-position : -1px -274px;

}

.e{

background-img : url(pic.jpg);

background-position : -1px -274px;

}

.r{

background-img : url(pic.jpg);

background-position : -1px -274px;

}

总结

三套“算法宝典”

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

28天读完349页,这份阿里面试通关手册,助我闯进字节跳动

算法刷题LeetCode中文版(为例)

人与人存在很大的不同,我们都拥有各自的目标,在一线城市漂泊的我偶尔也会羡慕在老家踏踏实实开开心心养老的人,但是我深刻知道自己想要的是一年比一年有进步。

最后,我想说的是,无论你现在什么年龄,位于什么城市,拥有什么背景或学历,跟你比较的人永远都是你自己,所以明年的你看看与今年的你是否有差距,不想做咸鱼的人,只能用尽全力去跳跃。祝愿,明年的你会更好!

由于篇幅有限,下篇的面试技术攻克篇只能够展示出部分的面试题,详细完整版以及答案解析,有需要的可以关注