web前端基础仏学习css精灵css sprite技术解析

CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。对于当前网络流行的速度而言,不高于200KB的单张图片的所需载入时间基本是差不多的,所以无需顾忌这个问题。  加速的关键,不是降低重量,而是减少个数。传统切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算。客户端每显示一张图片都会向服务器发送请求。所以,图片越多请求次数越多,造成延迟的可能性也就越大。

CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。

下面我就详细的讲解下他的使用技巧,包你现在不懂的童鞋会有个清楚的全新了解,虽然目前有这样的工具,但是还是要先清楚他的原理,技巧性的来做也会很快速的完成定位,下面我分享加个案例。

新建一个前端学习qun438905713,在群里大多数都是零基础学习者,大家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的小伙伴来一起交流。

首先跟大家说明一点,由于需要定位的背景都是合并在一张图的,所以都是一刀切的,要么是X轴坐标一致要么是Y轴坐标一致,也就有了我下面要讲述的2种类型了。

1。横向定位坐标

横向定位坐标意思就是Y轴坐标固定,它的特点就是每个图标的高度是一致的,通过改变x坐标的位置来改变背景。只需测量每个图标的宽度就可以知道x轴的坐标了。如果你还不知道这个规律,下面我就讲解给你听吧,下面拿我做的2个案例来说事。

效果图:

![](https://imgconvert.csdnimg.cn/aHR0cDovL3d3dy5hc2VvZS5jb20vdXBsb2FkZmlsZS8yMDE0LzA5MjgvMjAxNDA5MjgxMTE4NDE4MTIuanBn?x-oss-process=image/format,png)

实际背景图:

![](https://imgconvert.csdnimg.cn/aHR0cDovL3d3dy5hc2VvZS5jb20vdXBsb2FkZmlsZS8yMDE0LzA5MjgvMjAxNDA5MjgxMTE5MjM1MTguanBn?x-oss-process=image/format,png)

那么具体来讲解怎么来定位,这里是改变X坐标来定位。

由于高度都是一样所以Y轴上的坐标都是0或top

这里每个图标我是用一个span做背景的,下面具体分析下代码:

下面是Css  code:

.sharelogo{display:inline-block;*display:inline;*zoom:1;height:46px;background-image:url(…/images/shareIcon.jpg);background-repeat:none;}

.facebookLogo{background-position:0 0;width:20px;}

.pinterestLogo{background-position:-20px 0;width:42px;}

.twitterLogo{background-position:-62px 0;width:30px;}/**/

.flickrLogo{background-position:-92px 0;width:130px;}

.youtubeLogo{background-position:-222px 0;width:98px}

.blogLogo{background-position:-320px 0;width:84px;}

.sl{float:left;padding-right:10px;}

他们的背景图片都是公用这一张背景:background-image:url(…/images/shareIcon.jpg);

每个元素的背景都不允许重复:即:background-repeat:no-repeat;

读到这里你有发现一个规律,就是每个元素的坐标等于前面元素的坐标值加上宽度。即元素的横向坐标值公式等于。相邻元素的坐标值加上宽度。

pinterestLogo 的值等于facebookLogo的坐标值20px+facebookLogo的宽度20px ;是不是很简单啊,只要你知道元素的宽度就可以,因为横向坐标等必须要给个固定的宽度,所以这一步测量宽度不是浪费时间。希望仔细看源码中坐标值的规律。

不管是横向定位与纵向定位坐标的时候,他们的起始位置都是background-position:0  0;而横向定位的时候高度是固定的,所以每次只需改变X坐标的值就实现了。

比如facebook的logo是起始位置的图标,所以它的坐标值是0,0,就实现了它的定位。

那么pinterest的logo是它的下面一个,就是从facebook的宽度负值算起。由于facebook的宽度是21px;所以pinterest的logo坐标就是background-position:-20px 0; 下面以此类推twitterLogo 是pinterstLogo的下面一个,那么就是用pinterstLogo的坐标值加上pinterstlogo的宽度,就得到了twitterLogo的坐标位置了。就是-(20px+42px)=-62px;即twitterLogo 的坐标为.twitterLogo{background-position:-62px 0;width:30px;}读到这里你有发现一个规律,就是每个相邻元素的坐标等于前面元素的坐标值加上它前面元素的宽度。即元素的横向坐标值公司等于。相邻元素的坐标值加上它的宽度。好了下面讲第二种方案了。

![](https://imgconvert.csdnimg.cn/aHR0cDovL3d3dy5hc2VvZS5jb20vdXBsb2FkZmlsZS8yMDE0LzA5MjgvMjAxNDA5MjgxMTI0NTE4MzMuanBn?x-oss-process=image/format,png)

实际背景图片:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

给大家分享一些关于HTML的面试题,有需要的朋友可以戳这里免费领取,先到先得哦。


cs/618191877),先到先得哦。**

[外链图片转存中…(img-4ZQqiCkl-1713592790306)]
[外链图片转存中…(img-8f7YBNwd-1713592790306)]

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS Sprite是一种在网页中使用的优化技术,它通过将多个小图标或背景图像合并为一个大的图像,并使用CSS的background-position属性来显示其中的一小部分,从而减少HTTP请求的数量,提高网页加载速度。 以下是CSS Sprite技术的一些优点和缺点: 优点: 1. 减少HTTP请求:将多个图像合并为一个大图像后,只需一次HTTP请求就可以获取全部图像,减少了网页加载时的请求次数。 2. 提高加载速度:减少了HTTP请求的数量,可以提高网页的加载速度,特别是在拥有大量小图标或背景图像的网页上效果更明显。 3. 减少带宽消耗:合并后的大图像比多个小图像的总和要小,减少了传输的数据量,节省了带宽消耗。 4. 精灵图管理方便:通过将相关的图像合并到一张精灵图中,方便管理和维护。 缺点: 1. 图像更新麻烦:当需要更新精灵图中的某个图像时,需要重新生成整个精灵图,并且需要更新对应的CSS代码。这会增加开发和维护的复杂性。 2. 图像大小限制:合并后的精灵图尺寸有限,如果图像数量较多或图像尺寸较大,可能无法合适地放入一张图像中,导致使用多个精灵图或无法使用CSS Sprite技术。 3. 高分辨率屏幕适配:在高分辨率屏幕上,由于需要显示更高清晰度的图像,可能需要使用不同尺寸的精灵图,增加了开发和维护的复杂性。 综上所述,CSS Sprite技术可以有效地减少HTTP请求、提高网页加载速度和节省带宽消耗,但在图像更新和高分辨率屏幕适配方面可能存在一些不便和复杂性。在实际应用中,需要根据具体情况权衡使用CSS Sprite技术的利弊。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值