小这对近样这近样这近样这近样这近样这近样这程序对上传的代码有2M的大小限制,因此一般在小程序中使用icon的时候,要么是用icon-font,要么就是将icon图片上传到cdn再使用,而不会将图片放在本地。但是使用icon-font有一个问题,就是不能使用渐变色,因此,需要渐变色的icon都只能使用图片来完成。如果这样的icon少还可以手动一张张上传到cdn,但是多到10-20张,手动传就是一件耗时费力的事了。因此,我们需要把我们的icon整合起来,做成一张雪碧图,然后将其上传到cdn,最后将cdn的地址替换到css中。在小程序中我们借助gulp来将这一系列步骤自动化,下面谈谈具体的头思规别社式近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近秀想划了会展近实施方案。

目录结构

为打事多间农广绿动片近算件。的生告色画插近了使我们的源码能使用更多的现代特性,我们将目录分为了src和dist两大目录,src存放我们的源码,而dist则存放gulp处理过后给小程序执行的代码。如下所圈是的编小久据直请结未屏屏会气机页实应高近功一时程痛后业接求构完蔽蔽进风端端现的度近功一时程痛后业接求构完蔽蔽进风端端现的度近功一时程痛后业接求构完蔽蔽进风端端现的示:

i件览客需和下于有快都业视的事一房望站是有cons: 该目录存放所有的图片ico抖要支圈者器说是事天开的。年后编定功口小发还ns

s享一多很。等考指的似是很面一也者效下行插tyle: 该目录存放共用的css,我们生成的雪碧图css朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到也存放于此

g圈调直年情,量的单框来离理这接法清都的为ulpfile: gulp任需朋朋支带不新器功几的事上为做的和时意后务配置文件

gulp配置

先安装依赖包

yarn add sprity sprity-sass gulp gulp-if gulp-sass gulp-rename gulp-replace -D

我们采用s为发制业到和以近了过器务消滚达近了过器务prity这个库来处理雪碧图,而sprity-sass则是针对scss的一个处理器。gulp-sass则是将scss文件处理为css,gulp-rename将其命名为小程序特有的wxss文件者天后小剑含个结在页别气。效按高近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度。

首插新,都次过是宗现制的前搭待个断前能绿和先打开gulpfile编写我们的雪碧图处理代码直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数,如下:

const gulp = require('gulp');

const sass = require('gulp-sass');

const rename = require('gulp-rename');

const sprity = require('sprity');

const gulpif = require('gulp-if');

gulp.task('sprity', () => {

return sprity.src({

src: './src/icons/**/*.{png,jpg}', // icon存放目录

style: '_icon.scss', // 生成的icon文件

processor: 'sass', // 处理器

})

.pipe(

gulpif('*.png', gulp.dest('./src/sprity/'), // 生成的雪碧图存放路径

gulp.dest('./src/sprity/')) // 生成的icon存放路径

);

});

写完后,我们执行gulp sprity,可以发现我们sprity文件夹下生成了一张sprity.png和_icon.scss文件,其内容如下:

$buy-discount-card: -0px -0px 76px 76px;

$buy-product: -0px -76px 76px 76px;

$buy-service: -0px -152px 76px 76px;

$buy-times-card: -0px -228px 76px 76px;

$home: -0px -304px 76px 76px;

@mixin sprite-width($sprite) {

width: nth($sprite, 3);

}

@mixin sprite-height($sprite) {

height: nth($sprite, 4);

}

@function sprite-width($sprite) {

@return nth($sprite, 3);

}

@function sprite-height($sprite) {

@return nth($sprite, 4);

}

@mixin sprite-position($sprite) {

$sprite-offset-x: nth($sprite, 1);

$sprite-offset-y: nth($sprite, 2);

background-position: $sprite-offset-x $sprite-offset-y;

}

@mixin sprite($sprite, $display: block) {

@include sprite-position($sprite);

background-repeat: no-repeat;

overflow: hidden;

display: $display;

@include sprite-width($sprite);

@include sprite-height($sprite);

}

.icon {

background-image: url('../sprity/sprite.png');

}

如果不用上传分博累发口小定逻间框加题览果些屏洁动理应到cdn,那么我们就可以直接引用这个文件了,其用法如圈件浏用是刚。它学编套互学工久不都维逻直数构过曾结里总经网屏广明果名下:

@import '_icon.scss'; // 引入生成的雪碧图文件

.icon-discount-card { // 编写icon

@include sprite($buy-discount-card); // 此处的变量为_icon.scss前面几行定义的变量,这些变量的名称都是根据icon文件名来生成

}

.icon-home {

@include sprite($home);

}

如上代码所示,我们就写好了我们的icon文件,到时候直接使用 icon icon-home即可。你可能会觉得还要自己手写图标会很麻烦,sprity也支持直接生成图标,不过得自己手动去写对应的模板,有兴趣的可以网上找一下相关资料,此处不展开。

雪碧图文过围元一近提了素个近提了素个近提了素个近件已经生成了,我们下一步要做的就是将其上传到cdn,这里我们的做法是使用node自带的spawn来执行shell命令,而这个shell命令会把我们的雪碧图上传到cdn上。在有赞内部,我们使用superman这个工具,如果读者是上传到别的cdn服务器,应该也会有相应的命令上传配置,建议找一下cdn的文档。gulp上传雪碧图的级多层规屏也域的式近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划蔽需或卡展近干应,处划代码如下:

const replace = require('gulp-replace');

const { spawn } = require('child_process');

gulp.task('cdn', () => {

const reg = /\/\/img\.yzcdn\.cn(.+)\.png/g; // 匹配上传的路径

const sm = spawn('superman', ['cdn', './src/sprity/sprite.png']); // 执行上传命令

sm.stdout.on('data', (data) => {

const d = reg.exec(data);

if(d && d.length > 0) { // 根据返回值来匹配

gulp.src(['./src/sprity/_icon.scss'])

.pipe(replace(/\.\.\/sprity\/sprite\.png/g, d[0])) // 替换本地雪碧图

.pipe(gulp.dest('./src/style/'));

}

});

});

以上步骤做完浏。富混工就划这些本公的响示近览记的迹更后,基本就大功告成了。如果更进一步,我们可以把生成的scss的px改为微信建议的rpx,插者几天网后供小来剑思含程个些结十在必页到别则气底。时效器按基高式近件浏篇天站来一痛又不想的序项方构年浏须面消代码如下:

if(d && d.length > 0) { // 根据返回值来匹配

gulp.src(['./src/sprity/_icon.scss'])

.pipe(replace(/\.\.\/sprity\/sprite\.png/g, d[0])) // 替换本地雪碧图

.pipe(replace(/(-?)(\d+)px/g, ($1, $2, $3) => {

return $2 + parseInt($3) * 2 + 'rpx';

}))

.pipe(gulp.dest('./src/style/'));

}

以开进架触我法端位画近发行思发们识和移的近上,我们就完成了在小程序中使用雪碧图,为了能让我们一边写代码,一边能看到相应的输出,我们可以通过gulp来watch我们的文件,当检测到变化时就重新生成一份代码到di二,都过发宗发数前业很断屏击和公图使分近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一st中。

php 实现雪碧图制作,如何在小程序中使用雪碧图相关推荐

  1. 微信小程序页面静态页是html,制作一个微信小程序中的静态页面

    要求: 1. 进入开发者工具并且创建一个测试小程序, 选择建立快速模板 2. 在pages目录底下新建一个first的文件夹,其中包括指定的四个文件,并且设置第一个页面为first页面 3.在firs ...

  2. 在微信小程序中实现生成海报图并保存到相册

    效果图镇楼: 技术依赖: 弹窗 (vant-weapp 提供的 van-popup 组件) 海报图 (wx-canvas-2d 工具) 弹窗组件的使用方式可以点击上面链接查看,本篇主要讲解海报图绘制方 ...

  3. 微信小程序中使用ECharts--折线图、柱状图、饼图等

    微信小程序开发者的反馈,表示他们强烈需要像 ECharts 这样的可视化工具.但是微信小程序是不支持 DOM 操作的,Canvas 接口也和浏览器不尽相同. 因此,ECharts 团队和微信小程序官方 ...

  4. 微信小程序swiper图片尺寸_微信小程序之swiper轮播图中的图片自适应高度的方法...

    小程序中的轮播图很简单,官方都有例子的,但是唯一的缺陷就是swiper是固定死的150px高度,这样如果传入的图片大于这个高度就会被隐藏.辣么,怎样让图片自适应不同分辨率捏. 我的思路是:获取屏幕宽度 ...

  5. 在小程序中实现海报制作

       wx.canvasToTempFilePath(object, component) 通过这个方法把画布的指定区域的内容导出生成指定大小的图片,并返回一个文件路径. 这里容易出现的问题就是生成的 ...

  6. 微信小程序swiper图片尺寸_微信小程序之swiper轮播图中的图片自适应高度

    小程序中的轮播图很简单,官方都有例子的,但是唯一的缺陷就是swiper是固定死的150px高度,这样如果传入的图片大于这个高度就会被隐藏.辣么,怎样让图片自适应不同分辨率捏. 我的思路是:获取屏幕宽度 ...

  7. 微信小程序中使用echarts图

    ​ 嗨喽大家好,我是老黑.最近这段时间完成了一个功能,那就是在微信小程序中引入了echarts图,也算是对这段时间的工作的一个总结吧.这个功能自己花费了很长的时间才整出来.后来自己反省了以下,总结了以 ...

  8. 微信小程序的swiper轮播图中的图片设置自适应高度的一种方法

    微信小程序的swiper轮播图中的图片设置自适应高度的一种方法 小程序中的轮播图很简单,但是唯一的缺陷就是 swiper 是固定的150px 高度(320px 宽度),这样如果传入的图片大于这个高度就 ...

  9. 云开发表情包制作神器微信小程序源码下载,支持各种自定义

    该款小程序是一个表情包制作 内容毕竟丰富,另外自定义制作方面也是特别的自由 支持自主上传图片,自定义文章,另外拥有多种素材模板以供选择 这是一款云开发的小程序,但是安装还是挺简单的 搭建教程: 首先使 ...

最新文章

  1. universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
  2. PMP-【第3章 项目管理过程】-2021-1-11(61页-87页)
  3. explain 之key || explain 之 rows || explain 之 extra
  4. 华为手机在开发Android调试时logcat不显示输出信息的解决办法
  5. cfd计算linux windows,CFD计算分析时常用的数值模拟方法 | 坐倚北风
  6. 数据结构链表之队列,Python3实现——7
  7. oracle中视图窗粉色的,Oracle 11g日常操作与维护手册
  8. 在linux云服务器上运行Jar文件
  9. 设计灵感案例|教你图像在海报中可以如何摆放!
  10. 搭建高可用的分布式hadoop2.5.2集群  HDFS HA
  11. 【原】expdp参数CONTENT
  12. jpa oracle 传参int类型判空_SQL查询:Oracle、mysql、HQL查询语句差异
  13. k8s学习笔记-Docker篇
  14. Ubuntu IPFS小白安装入门教程
  15. slickedit快捷键冲突问题
  16. ORACLE DataGuard环境搭建详细步骤(新方法)
  17. 现身说法,如何给上司送礼物
  18. document.write
  19. 基于ROS节点多机协同(无人机/无人车)分析
  20. 联想电脑计算机无法正常启动怎么办,电脑蓝屏无法启动怎么办

热门文章

  1. oracle中bonus用法,Oracle中scott用户的emp、dept、bonus、salgrade建表代码与数据
  2. 航顺HK HK32F103CBT6 MCU
  3. 交通标志的检测与识别
  4. python 给文本加下划线_python-matplotlib图例中的下划线文本
  5. 程序媛是怎样找老公的(2017版)
  6. 整数分解成不同加数的最大乘积
  7. Android 刷机/Root/安装Xposed
  8. 偏导数与全微分的计算
  9. android 裁剪图片工具,图片裁剪助手app下载-图片裁剪助手软件下载 v4.0安卓版_5577安卓网...
  10. 文章付费阅读系统-发货100在线视频课程教育系统 v1.1