Lia
sprite_conf.js1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18'use strict';
module.exports = [{
src: ['*.png'],
image: 'build/sprite.png',
style: 'build/sprite.css',
prefix: '',
cssPath: './',
unit: '*@px',
convert: 1.5, // 这个根据给的原稿来修改
decimalPlaces: 6,
blank: 0,
padding: 10,
algorithm: 'left-right',
tmpl: '',
psd: '',
quiet: false
}];
Texture Merger
雪碧图工具
下载地址
使用说明
利用Egret Texture Merger和canvas快速开发帧动画
==============================gulp.spritesmith(推荐)================================
安装工具
1 | npm gulp |
配置gulp
1 | var gulp = require('gulp'), |
修改\node_modules\css-spritesmith\lib\css-spritesmith.js
1 | //修改1-搜索 |
执行
1 | gulp autoSprite |
封装插件
我自己做了个插件,大家有兴趣可以用一下,是针对1rem = 20px来换算的1
npm install gulp-css-spritesmith-tentou
https://www.npmjs.com/package/gulp-css-spritesmith-tentou
==============================gulp.spritesmith(不推荐)================================
安装工具
1 | npm gulp |
配置gulp
1 | var gulp = require('gulp'), |
执行
1 | gulp sprite |
修改生成的文件(sprite.css)
- 先将所有的
px
单位换为*@n*
(这个单位是令rem的基础单位为1px,大家根据自己图稿来配置) - 然后将
width
和height
修改为background-size
- 然后将生成的
sprite.png
放到存放图片的文件夹 - 然后将所有的
background-image
的地址修改正确 - 最后将
sprite.css
中的属性,分别插入的真正应用的css中就可以了
操作确实繁琐,等node学好后,自己写一个插件好了,敬请期待~~~~
直接修改gulp.spritesmith
1.首先修改\node_modules\spritesheet-templates\lib\spritesheet-templates.js1
2
3
4
5['x', 'y', 'offset_x', 'offset_y', 'height', 'width', 'total_height', 'total_width'].forEach(function (key) {
if (item[key] !== undefined) {
px[key] = item[key]/64 + 'rem';
}
});
修改的地方是item[key]/64+’rem’;这句,我的是设置了640px宽度,所以这里除以64来转换得到rem值。
2.修改\node_modules\spritesheet-templates\lib\templates\css.template.handlebars
在模板页中加入生成background-size内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{{/block}}
{{#block "sprites"}}
.cicon {
display: inline-block;
background-size: {{spritesheet.px.width}} {{spritesheet.px.height}};
}
{{#each sprites}}
{{{selector}}} {
background-image: url({{{escaped_image}}});
background-position: {{px.offset_x}} {{px.offset_y}};
width: {{px.width}};
height: {{px.height}};
}
{{/each}}
{{/block}}
主要添加了加粗的代码行。以上两点修改完成就可以把spritesmith生成的px转换成rem,增加background-size主要是因为px单位下图片背景位置跟大小默认就是雪碧图中的大小,所以转换成rem后需要进行修改。
PS:rem单位下在不同设备中可能出现图片中出现了雪碧图中其他图的边边角角,所以这里需要设置图片合成的时候彼此之间有一定的间隙,这个只要是gulpfile中设置下padding:10即可。1
2
3
4
5
6var spriteData = gulp.src(base_url+'_images/icons/*.+(jpeg|jpg|png)').pipe(spritesmith({
imgName: 'icons_sprite.png',
cssName: 'icons_sprite.css',
cssFormat: 'css',
padding: 10
}));