Web优化系列,雪碧图
前言
我们在开发网站的时候,通常会把常用的图标合并成css sprite(雪碧图),可以有效的减少站点的http请求数量,从而提高网站性能。
下面让我们一起来学习一下如何使用webpack
合并sprite图。
准备
webpack
webpack-spritesmith
插件file-loader
sass-loader
(因为webpack-spritesmith
除了生成雪碧图之外,还会生成相应的mixin
,使用起来很方便,所以要用sass
)- 这里我还使用了
ExtractTextPlugin
来提取css文件,这不是必须的你也可以不用,用的话需要安装extract-text-webpack-plugin
这个插件
使用npm安装好上面的东西
下面请开始我们的表演
step1:将我们要合并的图标准备好,放在src下的ico文件夹下
给大家分享一个好用的icon下载网站,里面的图标风格我很喜欢,而且是免费的哦,大家也可以到里面去下载自己喜欢的icon用于本次练习
这是我下载的png图片
step2 在你的webpack.config.js中按下面这样编写
const path = require('path'); const SpritesmithPlugin = require('webpack-spritesmith'); module.export = { // ... module: { rules: [ { test: /png$/ loader:[ 'file-loader?name=i/[hash].[ext]' ] }, { test: /\.(css|scss)$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: ['css-loader', 'postcss-loader', 'sass-loader'] }) } ] }, resolve: { modules: [ 'node_modules', 'assets/sprite' //css在哪里能找到sprite图 ] }, plugins: [ new SpritesmithPlugin({ src: { cwd: path.resolve(__dirname, 'src/ico'), //准备合并成sprit的图片存放文件夹 glob: '*.png' //哪类图片 }, target: { image: path.resolve(__dirname, 'src/assets/sprites.png'), // sprite图片保存路径 css: path.resolve(__dirname, 'src/assets/_sprites.scss') // 生成的sass保存在哪里 }, apiOptions: { cssImageRef: "~sprite.png" //css根据该指引找到sprite图 } }) ] }
step3 在你的scss
文件中@import
导入生成的文件
@import '../../../assets/sprite/_sprite.scss'; //路径请自行更改 .facebook{ @include sprite($facebook); } .twitter{ @include sprite($twitter); } .google{ @include sprite($google); }
step4 运行webpack,看到我们的sprite图已经被用在我们的站点上了
/assets/sprite/sprite.png就是我们生成的sprite图了
最后看看应用在网站上的效果
总结
好了,以上就是webpack生成css sprite的办法了,是不是觉着很简单呢,如果本文对您有帮助,请记得点个赞哦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术