雪碧图是什么,怎么用

简介: 雪碧图是什么,怎么用

什么是雪碧图



精灵图(英语:Sprite),又被称为雪碧图拼合图。在计算机图形学中,当一张二维图像集成进场景中,成为整个显示图像的一部分时,这张图就称为精灵图


常见碳酸饮料雪碧的英文名也是 Sprite,因此也有人会使用雪碧图的非正式译名。


优点:


体积小:把N多个小图标放到一张大图上去,通过整合图片来减少图片的体积;


请求次数少,打开速度更快:通过图片整合减少用户对服务器的请求次数,从而提高网站的优化速度。


使用 background属性

例如:background: #ccc url('/icon.png') no-repeat 0 -200px


补充background相关属性


background-color: red (等于 background:red)


background-image: url() 填充背景图片


background-repeat: no-repeat(不平铺)


前端如何制作合并精灵图(雪碧图)



方法一:这是一个在线生成工具


http://alloyteam.github.io/gopng/###


方法二:npm命令生成


1.首先电脑上要安装有 node.js


打开终端输入下npm -v可以查看是否安装(注意空格)


LiudeMac-Pro:~ liu$ npm  -v
6.14.13 //已安装会显示这个node的版本号


2.使用spirit-cli命令合并所有图片为一张精灵图并生成代码


①全局安装spirit-cli插件


// 使用npm 
npm install -g spirit-cli   //报错的话,可以尝试前面加sudo,以管理员身份运行:sudo npm install -g spirit-cli


这里如果出现报错,

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules //没有读写权限
npm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /usr/local/lib/node_modules
npm ERR! errno -13
···
npm ERR! Error: EACCES: permission denied,//拒绝授权 access '/usr/local/lib/node_modules'
npm ERR!  [Error: EACCES: permission denied, access '/usr/local/lib/node_modules'] {
npm ERR!   errno: -13,


报错显示没有权限,我们需要以管理员身份去运行,在前面加上sudo,如下图

sudo npm install -g spirit-cli


②使用命令 spirit 加上要合并的图片所在的文件夹路径


spirit + 空格+文件夹路径

// 使用npm 
→ ~ lrachel$ spirit /Users/lrachel/Desktop/flag
开始检测路径: /Users/lrachel/Desktop/flag
检测到5个文件!
开始进行合并


合并完成后,你会发现在你之前创建的img文件夹下多了一个spirit-cli文件夹,文件夹里面有合并好的精灵图(雪碧图)和对应的CSS,到这里只需要前端引入.css文件样式直接调用就可以。


image.png


image.png


image.png


image.png


举一反三



网页中用到.jif动图的时候,总是会出现锯齿,那么,我们也可以采用雪碧图的方式,让多张图片连续滚动,实现动画效果,相当于序列帧图。


知识点补充


npm -v 检查是否安装npm

LiudeMac-Pro:~ liu$  cd desktop/文件夹名      //打开文件夹
LiudeMac-Pro:~ liu$  pwd
//
//全称“pathWord ” 查看当前打开的文件夹的完整路径

npm cache clean  缓存清理

sudo npm install npm -g
//表示以管理员身份运行,或是node已随附npm安装,因此您应该拥有的版本npm,但是npm更新的频率比更新的频率高node,因此您需要确保它是最新版本。不是太确定


常见报错


sudo下的npm无法升级-sudo npm -v 与 npm -v版本号是不一样的


参考解决方案 点击查看


什么是NPM


NPM名词解释:


npm(全称 Node Package Manager,即“node包管理器”)是Node.js默认的、用JavaScript编写的软件包管理系统


NPM说明


npm会随着Node.js自动安装[3]。npm模块仓库提供了一个名为“registry”的查询服务,用户可通过本地的npm命令下载并安装指定模块。此外用户也可以通过npm把自己设计的模块分发到registry上面[4]


NPM使用


npm可以管理本地项目的所需模块并自动维护依赖情况,也可以管理全局安装的JavaScript工具。


如果一个项目中存在package.json文件,那么用户可以直接使用npm install命令自动安装和维护当前项目所需的所有模块。在package.json文件中,开发者可以指定每个依赖项的版本范围,这样既可以保证模块自动更新,又不会因为所需模块功能大幅变化导致项目出现问题。


开发者也可以选择将模块固定在某个版本之上。


什么是Node.js



Node.js 是能够在服务器端运行 JavaScript的[开放源代码、跨平台"开放源代码")运行环境。


Node.js 采用Google开发的 V8 运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。这些技术通常用于资料密集的即时应用程序。


Node.js 大部分基本模块都用 JavaScript 语言编写。


在 Node.js 出现之前,JavaScript 通常作为客户端程序设计语言使用,以JavaScript 写出的程序常在用户的浏览器上运行。Node.js 的出现使 JavaScript 也能用于服务端编程。


Node.js 含有一系列内置模块,使得程序可以脱离 Apache HTTP ServerIIS,作为独立服务器运行。




相关文章
|
前端开发 API
vue3+TS实战中Dialog弹窗封装复用的技巧
Dialog弹窗在后台管理系统中是使用频率非常高的组件,添加和修改数据基本都会用到,本文就讲讲在vue3和ts的项目中如何封装Dialog组件,实现代码高复用
3810 0
vue3+TS实战中Dialog弹窗封装复用的技巧
|
9月前
|
机器人 API 调度
Weibo微博自动发帖机器人,新浪微博自动发帖脚本,微博自动发布工具分享
这个微博机器人系统包含完整的OAuth2.0认证流程、定时任务调度、多种内容类型发布和自动回复功能
|
前端开发 JavaScript 开发者
雪碧图:图片合并的艺术!
雪碧图:图片合并的艺术!
|
机器学习/深度学习 人工智能 搜索推荐
医疗领域的人工智能:诊断和治疗的革命
医疗领域的人工智能:诊断和治疗的革命
547 84
|
人工智能 算法 物联网
ComfyUI:搭积木一样构建专属于自己的AIGC工作流(保姆级教程)
通过本篇文章,你可以了解并实践通过【ComfyUI】构建自己的【文生图】和【文生动图】工作流。
20568 5
ComfyUI:搭积木一样构建专属于自己的AIGC工作流(保姆级教程)
|
前端开发 PHP 数据安全/隐私保护
知识付费系统源码 PHP
在数字经济背景下,知识付费成为新兴领域,尤其在线教育平台的兴起,使更多教育者通过知识付费系统销售课程,实现数字化转型与收入提升。开发此类平台需考虑众多技术细节和业务需求,如使用PHP语言实现支付功能,确保安全性、性能和可扩展性,选择合适的技术方案至关重要。
349 4
知识付费系统源码 PHP
|
机器学习/深度学习 人工智能 开发者
【AI系统】昇思 MindSpore 关键特性
本文介绍华为自研AI框架昇思MindSpore,一个面向全场景的AI计算框架,旨在提供统一、高效、安全的平台,支持AI算法研究与生产部署。文章详细阐述了MindSpore的定位、架构、特性及在端边云全场景下的应用优势,强调其动静态图统一、联邦学习支持及高性能优化等亮点。
613 7
【AI系统】昇思 MindSpore 关键特性
|
人工智能 安全 Linux
Linux操作系统的演变与未来趋势###
本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其开源模式对技术创新和IT行业的影响,并展望了Linux在未来技术生态中的角色。通过历史回顾、现状分析和未来预测,本文旨在为读者提供一个关于Linux操作系统全面而深入的视角。 ###
|
JSON 前端开发 API
后端开发中的API设计与文档编写指南####
本文探讨了后端开发中API设计的重要性,并详细阐述了如何编写高效、可维护的API接口。通过实际案例分析,文章强调了清晰的API设计对于前后端分离项目的关键作用,以及良好的文档习惯如何促进团队协作和提升开发效率。 ####
|
API
Vue3组件通信全解析:利用props、emit、provide/inject跨层级传递数据,expose与ref实现父子组件方法调用
Vue3组件通信全解析:利用props、emit、provide/inject跨层级传递数据,expose与ref实现父子组件方法调用
4594 0