当前位置: 首页 > news >正文

【常见CSS扫盲雪碧图】从源码细看CSS雪碧图原理及实现,千字详解【附源码demo下载】

写在前面】其实估计很多人都听过雪碧图,或者是CSS-Sprite,在很多门户网站就会经常有用到的,之所有引出雪碧图这个概念还得从前端加载多个图片时候页面闪了一下说起,这样给人的视觉效果体验很差,也就借此机会和大家说说CSS雪碧图的故事。
涉及知识点:CSS雪碧图,background-position属性,页面加载优化,如何防止页面闪一下加载。
【皇榜】支持博主的可以一睹皇榜哟,等您上榜!

目录结构

  • 页面效果
  • 1、深入理解雪碧图
    • 1.1 雪碧图是啥?
    • 1.2 雪碧图的实现原理
    • 1.3 雪碧图的特点
  • 2、雪碧图实例应用
    • 2.1 实现步骤:
    • 2.2 实现代码
    • 2.3 运行效果
  • 3、源码demo下载
    • 百度网盘
    • 123云盘(下载不限速)
    • 片尾彩蛋

页面效果

在这里插入图片描述

版权声明:此文属CSDN-《拄杖盲学轻声码》博主原创,了解更多可以搜索哟

1、深入理解雪碧图

1.1 雪碧图是啥?

这里说的css雪碧图并不是我们喝点雪碧哈,其实简单来说就是我们把多张小图标放在一张图片上,然后通过设置图片的背景位置来实现单个图的展示;
如下图所示的百度页面:
在这里插入图片描述

其中加载的资源里面我们就可以看到有这么一个png图,里面包含四个小图标,其实这个就是我们说的雪碧图。

1.2 雪碧图的实现原理

具体实现我们还是可以通过百度首页为例,首先我们针对这个里面的拍照图标去定位看一下,不难发现,其设置的css属性包括了background,background-position,宽高,外边距,及相对偏移。
在这里插入图片描述

尤其是background-position 这个属性设置了0,-51。其中0是表示左偏移,-51表示的相对偏移量,文字说不好理解,我们就手绘一个坐标给大家看看就一目了然了:
在这里插入图片描述
从四象限里面我们一下就能看出怎么设置background-position图片定位了,为了证明我们的理解正确性,我把原来的-51改成-26试试看就很清晰了,如下所示。
在这里插入图片描述

从这里大家就能清楚的了解如何设置雪碧图的background-position属性图片偏移值了。

1.3 雪碧图的特点

A.减少服务器资源请求次数,加快访问速度,防止页面加载闪图现象
B.因为大图资源大,初次加载速度会慢些
C.普遍适用于图标的加载,不建议用于大图的拼接加载。

2、雪碧图实例应用

其实在1.2章节我们就很详细的说明了他的实现原理,那么现在就跟随博主的步伐,我们去实现一个小demo吧。

2.1 实现步骤:

A、整理大的png图片(可PS)
B、精确计算各个图片的偏移量
C、创建dom节点,设置背景图
D、设置大小及偏移量

2.2 实现代码

其实核心就是创建一个dom,然后设置宽高,最后再设置背景色和偏移值。

Html搭建

<div class="showicons allshow"><h2>展示区(雪碧图实现)</h2><hr><div class="showArea"></div>
</div>

Css设置

.showArea {background: url(img/icons.png) no-repeat;width: 40px;height: 40px;position: absolute;margin-top: 20px;background-position: 0 -238px;
}.allshow {position: relative;
}

2.3 运行效果

如下所示雪碧图效果
在这里插入图片描述

3、源码demo下载

百度网盘

链接:https://pan.baidu.com/s/1XBkmnkK95r9tij3AVo4Nrg
提取码:hdd6

123云盘(下载不限速)

链接:https://www.123pan.com/s/ZxkUVv-qWJ4.html
提取码:hdd6

片尾彩蛋

倾心打造佳作,愿解君之惑,如若有幸,盼君上榜助阵,特此敬谢!
皇榜入口点击此处

若有疑惑可以留言讨论哈,期待和您一起进步!!!

相关文章:

【常见CSS扫盲雪碧图】从源码细看CSS雪碧图原理及实现,千字详解【附源码demo下载】

【写在前面】其实估计很多人都听过雪碧图&#xff0c;或者是CSS-Sprite&#xff0c;在很多门户网站就会经常有用到的&#xff0c;之所有引出雪碧图这个概念还得从前端加载多个图片时候页面闪了一下说起&#xff0c;这样给人的视觉效果体验很差&#xff0c;也就借此机会和大家说…...

Java多线程:ThreadLocal源码剖析

ThreadLocal源码剖析 ThreadLocal其实比较简单&#xff0c;因为类里就三个public方法&#xff1a;set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结&#xff0c;讲解ThreadLocal采取这样的思路。 三个理论基础 在剖析ThreadLo…...

96、数据的存储

运行实例&#xff1a; 在debug和release两种模式下&#xff0c;进行代码运行&#xff0c;debug下 i 的地址是大于arr[9] 的地址的&#xff0c;release 下i 的地址是小于arr[9] 的地址。原因是:release状态进行了优化处理。 C语言中基本的内置类型 整形数据类型 char …...

@EventListener注解详细使用(IT枫斗者)

EventListener注解详细使用 简介 EventListener是一种事件驱动编程在spring4.2的时候开始有的&#xff0c;早期可以实现ApplicationListener接口, 为我们提供的一个事件监听、订阅的实现&#xff0c;内部实现原理是观察者设计模式&#xff1b;为的就是业务系统逻辑的解耦,提高…...

[c++17新增语言特性] --- [[nodiscard]]和[[maybe_unused]]

1 [[nodiscard]] 介绍和应用示例 [[nodiscard]] 是C++17引入的一个属性(Attribute),它用于向编译器提示一个函数的返回值应该被检查,避免其被忽略或误用。它可以被用于函数、结构体、类、枚举和 typedef 等声明上,表示如果函数返回值未被使用,或者结构体、类、枚举和 type…...

Centos7安装和使用docker的笔记

最近项目要求用容器部署&#xff0c;所以需要将docker的用法搞清楚&#xff0c;在操作过程中&#xff0c;积累了一些操作方法和技巧&#xff0c;作为笔记&#xff0c;为后面使用做个参考。 首先安装docker需要给centos增加源&#xff08;参考https://www.runoob.com/docker/cen…...

结构像与功能像

导读现代神经成像技术使我们能够研究活体大脑的结构和功能。活体神经成像的益处是显而易见的&#xff0c;而且在基础和临床神经科学中&#xff0c;神经成像已经取得了巨大进展。本文概述了利用活体神经成像研究大脑结构和功能的工作和成就。介绍了几种不同类型的结构MRI成像方法…...

【IAR工程】STM8S基于ST标准库读取DS1302数据

【IAR工程】STM8S基于ST标准库读取DS1302数据✨申明&#xff1a;本文章仅发表在CSDN网站&#xff0c;任何其他网站&#xff0c;未注明来源&#xff0c;见此内容均为盗链和爬取&#xff0c;请多多尊重和支持原创!&#x1f341;对于文中所提供的相关资源链接将作不定期更换。&…...

【SpringBoot】实现后端服务器发送QQ邮件验证码的功能

步骤一、添加邮件相关依赖二、配置邮件服务器三、发送邮件PS&#xff1a;SMTP 发送失败的解决方案一、添加邮件相关依赖 在 pom.xml 文件中添加 JavaMail 和 Spring Mail 相关的依赖。示例代码如下&#xff1a; <dependency><groupId>com.sun.mail</groupId&g…...

vue在input中输入后,按回车,提交数据

vue在input中输入后&#xff0c;按回车&#xff0c;提交数据 1.展示效果如下&#xff1a; 2.代码展示&#xff1a; <div><el-input v-model"toAddNameText" keyup.enter.native"toAddName()" placeholder"回车&#xff0c;即新增该竖杆名称…...

【YOLOX】用YOLOv5框架YOLOX

【YOLOX】用YOLOv5框架YOLOX一、新建common_x.py二、修改yolo.py三、新建yolox.yaml四、训练最近在跑YOLO主流框架的对比实验&#xff0c;发现了一个很奇怪的问题&#xff0c;就是同一个数据集&#xff0c;在不同YOLO框架下训练出的结果差距竟然大的离谱。我使用ultralytics公司…...

【python机器学习实验】——逻辑回归与感知机进行线性分类,附可视化结果!

【python机器学习实验】——逻辑回归与感知机进行线性分类&#xff0c;附可视化结果&#xff01; 下载链接 下载链接 下载链接 可视化效果图&#xff1a; 感知机模型结果为例&#xff1a; 首先&#xff0c;我们有训练数据和测试数据&#xff0c;其每一行为(x,y,label)的形式…...

wps删除的文件怎么恢复

在办公中&#xff0c;几乎每个人都会用到WPS办公软件。它可以帮助我们快速有效地处理各种Word文档、ppt幻灯片、excel表格等。但有文件就会有清理&#xff0c;如果我们不小心删除了wps文件呢?那些wps删除的文件怎么恢复?针对这种情况&#xff0c;小编为大家带来一些恢复WPS文…...

NIO消息黏包和半包处理

1、前言 我们在进行NIO编程时&#xff0c;通常会使用缓冲区进行消息的通信&#xff08;ByteBuffer&#xff09;&#xff0c;而缓冲区的大小是固定的。那么除非你进行自动扩容&#xff08;Netty就是这么处理的&#xff09;&#xff0c;否则的话&#xff0c;当你的消息存进该缓冲…...

day018 第六章 二叉树 part05

一、513.找树左下角的值 这个题目的主要思路是使用广度优先搜索&#xff08;BFS&#xff09;遍历整棵树&#xff0c;最后返回最后一层的最左边的节点的值。具体的实现可以使用队列来存储每一层的节点&#xff0c;并且在遍历每一层节点时&#xff0c;不断更新最左边的节点的值。…...

如何下载ChatGPT-ChatGPT如何写作

CHATGPT能否改一下文章 ChatGPT 作为一种自然语言处理技术&#xff0c;生成的文章可能存在表达不够准确或文风不符合要求等问题。在这种情况下&#xff0c;可以使用编辑和修改来改变输出的文章&#xff0c;使其符合特定的要求和期望。 具体来说&#xff0c;可以采用以下步骤对…...

微策略再次买入

原创&#xff1a;刘教链* * *隔夜&#xff0c;比特币再次小幅回升至28k上方。微策略&#xff08;Microstrategy&#xff09;创始人Michael Saylor发推表示&#xff0c;微策略再次出手&#xff0c;买入1045枚比特币。此次买入大概花费2930万美元&#xff0c;平均加仓成本28016美…...

express框架

Express 是基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架. 创建一个基本的express web服务器 // 1.导入express const express require(express); // 2.创建web服务器 const app express(); // 3.启动web服务器 app.listen(80, ()>{console.log(expres…...

完蛋的goals

...

Javase学习文档------面象对象初探

引入面向对象 面向对象的由来: 面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;是一种编程范型&#xff0c;其由来可以追溯到20世纪60年代。在此之前&#xff0c;主流编程语言采用的是“过程化编程”模式&#xff0c;即面向过程编程模式。在这种模式下&…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

LangChain【6】之输出解析器:结构化LLM响应的关键工具

文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器&#xff1f;1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...