移动端开发中,使用gulp.spritesmith进行小图sprite并生成样式,但由于spritesmith默认是以px为单位,所以就把插件的内容修改了下让生成rem单位并且能把background-size设置为雪碧图的宽高。
1.首先修改gulp.spritesmith\node_modules\spritesheet-templates\lib\spritesheet-templates.js
修改的地方是px[key] = item[key]/2/10 + 'rem';这句,按照你转换rem的方式转换得到rem值。
2.修改gulp.spritesmith\node_modules\spritesheet-templates\lib\templates\scss.template.handlebars 如果你的预编译语言不是scss,那么修改对应你的预编译语言的模版文件
需要修改的是在模板页中加入生成background-size内容
我这边修改的是新加了个sprite-size混合宏,将背景图片的大小转换为rem,然后在混合宏sprite里面添加自己新建的混合宏。
以上两点修改完成就可以把spritesmith生成的px转换成rem,增加background-size主要是因为px单位下图片背景位置跟大小默认就是雪碧图中的大小,所以转换成rem后需要进行修改。
PS:rem单位下在不同设备中可能出现图片中出现了雪碧图中其他图的边边角角,所以这里需要设置图片合成的时候彼此之间有一定的间隙,这个只要是gulpfile中设置下padding:10即可。