当前位置: 首页 > 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;即面向过程编程模式。在这种模式下&…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...