介绍


sprity 是一个模块化的雪碧图生成工具
会根据目录中的图片生成相应的雪碧图和样式文件,支持retina图,可以内嵌base64 编码格式的图,支持不同的图片格式和有不同的图片引擎可以选择。
sprity 的前身是css-sprite,sprity的 git地址

sprity的功能

  • 生成雪碧图和对应的css文件(也可以是less,sass等)

  • 可以配置多个雪碧图图片

  • 可以配置多个分辨率的雪碧图(也就是可以按照比例生成雪碧图)

  • 可以讲图片搞成base64编码

如何使用

安装

npm install sprity --save

使用

sprity可以和gulp,grunt配合使用,这里使用的是gulp,先上代码

gulp.task('sprites', function () {return sprity.src({name: 'icon',//这里配置name,生成的图片就是icon-xx.png了src: config.src.img + '/icons/**/*.png',//这里配置生成多个雪碧图,对应目录都在icons/**下面split: true,//一定要设置为true,不然多图就有问题了style: './icon.scss',//生成的sass文件路径format: 'png',//processor: 'sass',//指定sass的处理器,[点击查看更多](https://github.com/sprity/sprity#style-processors)cssPath: '#{$icon-sprite-path}',//这里制定生成的css 的路径,模版里面也有对应的dimension: [{ratio: 1, dpi: 36},{ratio: 0.5}],template: './sprite-tpl.hbs',orientation: 'binary-tree'//指定图片算法,具体的可以参考git}).pipe(gulpif('*.png', gulp.dest(config.dest.img), gulp.dest(config.src.sass)))
});

hbs模版,sprity采用的是handlebars模版,具体的语法参考handlebars,
自定义模版所有的字段参考wiki
注意$icon-sprite-path,在sprity的配置文件中用到过,这里在sass里面定义了一个变量
我的原图都是2倍,合图后需要缩放2倍,因此在配置文件中定义了一个0.5的倍率作为参考倍率

$icon-sprite-path: '/static/images';
{{#each layouts}}{{#each sprites}}.{{cssesc ../classname}} {{{#if dpi}}background-image: url('{{escimage url}}');background-size: {{baseWidth}}px {{baseHeight}}px;display:inline-block;{{/if}}}{{/each}}{{#each layout.items}}.{{../classname}}-{{meta.name}} {background-position: -{{baseDim x}}px -{{baseDim y}}px;width: {{baseDim width}}px;height: {{baseDim height}}px;}{{/each}}
{{/each}}

sprity生成的sass文件,东西太多了,选了几个列出来,这下知道$icon-sprite-path是干什么的了吧

$icon-sprite-path: '/static/images';
.icon-apps {
}.icon-apps {background-image: url('#{$icon-sprite-path}/icon-apps.png');background-size: 108px 108px;display:inline-block;
}
.icon-apps-huiyishi {background-position: -0px -0px;width: 54px;height: 54px;
}

注意,前缀如果想不是icon,可以通过prefix来控制

结语

sprity 能做到自动化生成雪碧图,但是可配置型不是特别高,控制粒度很大,后续考虑使用postcss,postcss的合图插件力度可以控制在单个css规则上面,这样就可以指定那些需要base64,那些需要合图,那些可以搞到cdn上了

雪碧图sprity 合并多图使用心得相关推荐

  1. 雪碧图工具sprity(20151201更新修复了同时合并多张图的bug)

    前身是css-sprite,前几天帮新同事搭建环境,意外发现sprity在window下可以安装成功了,同时也发现node版本已经4点几了,自己电脑的版本还停留在0.10,赶紧把自己的node升级到最 ...

  2. python多张图片合并拼接,python制作sprite图、雪碧图

    python多张图片合并拼接,python制作sprite图.雪碧图 整理图片集 找两个文件夹,yangying和zhaoliying,分别放上照片8张,共16张照片. 创建sprite.py # 多 ...

  3. 前端性能优化总结/懒加载、函数节流、优化dom操作、雪碧图、合并文件

    1.减少 HTTP 请求数量 在浏览器与服务器进行通信时,主要是通过 HTTP 进行通信.浏览器与服务器需要经过三次握手,每次握手需要花费大量时间.而且不同浏览器对资源文件并发请求数量有限(不同浏览器 ...

  4. gulp将多张小图自动合成雪碧图

    最近一直在做移动端的改版项目,做之前老大就跟我说了好几次,说这次改版一定要用雪碧图减少一个页面的图片的请求次数,能加快页面的加载速度就一定要加快,我说可以.因为之前的项目开发时间过短,也没有时间去慢慢 ...

  5. CSS 关于雪碧图预处理和后处理方案的讨论

    广告:SF 里弄了个 CSS 小圈子,欢迎一起来讨论问题 前端小图标处理方案众多,本文主要介绍基于雪碧图的处理方案,分析雪碧图的预处理和后处理模式的得与失,以及在项目中通常会遇到的问题以及解决方案.其 ...

  6. 前端开发工具介绍----合成雪碧图工具(css sprite)

    合成雪碧图Sprite工具 1.国外的在线合成工具:http://csssprites.com/ 选择需要合并的文件----设置option选项(包括:元素的间距,排列方式,背景颜色,边框)----- ...

  7. webpack雪碧图生成

    原文链接:http://dopro.io/webpack-sprites.html 前言 在HTTP/2.0还没有普及的现在,css sprite(雪碧图)仍是前端工程化中必备的一环,而随着webpa ...

  8. HTML中的“雪碧图“详解

    HTML中的雪碧图详解 1.雪碧图的支持格式: 每张小图标以.png格式文件的形式引用到页面上,使用雪碧图只需要引用一张图片. 2.雪碧图的优点: (1)可以减小建立连接的消耗,加快运行. (2)多张 ...

  9. 精灵图(雪碧图)的好处

    CSS Sprites 也称之为精灵图或雪碧图,是一种背景图片的应用处理方式,将很多小图片合并到到一张大图中去.把整个大图作为背景图,然后通过 background-position 属性将合适的图片 ...

最新文章

  1. 有监督、无监督与半监督学习【总结】
  2. quartz配置_基于spring-boot 2.x +quartz 的CRUD任务管理系统
  3. CodeForces509F Progress Monitoring
  4. 报表移动端app如何实现页面自适应?
  5. C语言学习之将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1. 要求改为1,4,5,6,8。
  6. MacosX 下GCC编译指定版本的代码
  7. Linux读取内核空间,linux,arm_arm如何在内核空间直接读写某个物理地址(或者进程的虚拟地址),linux,arm,c,linux-kernel,memory - phpStudy...
  8. 刘奇:当今一切都要更实时、更弹性、更简单,TiDB 就是这样的基础设施 | TiDB DevCon 2020
  9. 为什么Redis单线程却能支撑高并发?
  10. 俞敏洪-精彩绝伦的人生
  11. 解决AppUpdate不能使用的问题
  12. 线程并发锁竞争--java锁jvm锁--synch锁分析
  13. 数据结构——顺序表的实现
  14. html5编写微信留言,HTML5春节(支持微信和填写姓名)祝福所有程序员幸福快乐...
  15. 字符串是否为空(isEmpty和isBlank的区别)
  16. 使用 FileReader进行文件读取
  17. 概率论复习笔记——条件概率、全概率、贝叶斯公式及其应用
  18. R语言 - 集成开发环境IDE
  19. matlab三相变压器怎么设置,simulink变压器设置
  20. 转载==数论倒数,又称逆元(我整个人都倒了( ̄﹏ ̄))

热门文章

  1. Win10 连接 Ubuntu16.04.3(通过Xdrp连接xfce4界面)
  2. MachineLearning(10)-聚类
  3. MachineLearning(6)-Daviad Silver强化学习课程脉络整理
  4. Linux-ubuntu18.04 终端命令ping,ssh
  5. 北大青鸟java y2_Struts-2 北大青鸟 Y2学年 项目案例使用 2框架开发租房网站 Java Develop 249万源代码下载- www.pudn.com...
  6. 提高程序员职场价值的10大技巧
  7. myeclipse8.5 离线装SVN
  8. JAVA-Lambda表达式
  9. Jmeter----5.1 设置中文
  10. 【Java】 大话数据结构(1) 线性表之顺序存储结构