这是一个帮助前端开发工程师将css代码中的切片合并成雪碧图的工具,它的主要功能是:css
grunt-sprite
使用 spritesmith 做为内部核心算法,根据官方文档中提到的基本依赖,需要安装Graphics Magick(gm) 和 PhantomJS 两个依赖。html
Graphics Magick(gm)前端
GraphicsMagick
为 grunt-sprite
提供用于图像处理的框架,安装方法:git
Macgithub
// 安装GM图形库 brew install GraphicsMagick
Windows算法
前往官方网站下载安装GM图形库npm
PhantomJS框架
PhantomJS
为 spritesmith
提供 CSS选择器 与 JSON 的支持,安装方法:grunt
Mac工具
// 安装 Phantomjs brew install phantomjs
Windows
前往官方网站下载安装Phantomjs
// 自动雪碧图 sprite: { allslice: { files: [ { //启用动态扩展 expand: true, // css文件源的文件夹 cwd: 'css', // 匹配规则 src: ['*.css'], //导出css和sprite的路径地址 dest: 'tmp/', // 导出的css名 ext: '.sprite.css' } ], options: { // 默认使用GM图像处理引擎 'engine': 'gm', // 默认使用二叉树最优排列算法 'algorithm': 'binary-tree', // 给雪碧图追加时间戳,默认不追加 'imagestamp':false, // 给样式文件追加时间戳,默认不追加 'cssstamp':true, // 是否以时间戳为文件名生成新的雪碧图文件,默认不生成新文件 'newsprite':true } } }
files
使用标准的动态文件对象
dest
指定一个输出的目录,将会在这个目录下建立一个css/
和一个sprite/
目录。
options
engine
必选项,指定图像处理引擎,选择gm
algorithm
必选项,指定排列方式,有top-down
(从上至下), left-right
(从左至右), diagonal
(从左上至右下), alt-diagonal
(从左下至右上)和 binary-tree
(二叉树排列) 五种供选择。
imagestamp
可选项,是否要给雪碧图追加时间戳,默认不追加
cssstamp
可选项,是否给样式文件追加时间戳,默认不追加
'newsprite'
可选项,是否以时间戳为文件名生成新的雪碧图文件,默认不生成新文件
请不要忘了载入插件
grunt.loadNpmTasks('grunt-sprite');
有一个相似这样的目录结构:
├── test ├── css/ └── icon.css ├── slice/ ├── icon-a.png ├── icon-a@2x.png ├── icon-b.png └── icon-b@2x.png └── publish ├── css/ └── icon.sprite.css └── sprite/ ├── icon.png └── icon@2x.png
css/icon.css
调用slice/
目录下的切片,grunt-sprite
会将 css/icon.css
进行处理。
在publish/
目录下生成 css/
和 sprite/
两个目录,css/
目录下是处理完成的样式 icon.sprite.css
,而sprite/
目录下是合并完成的雪碧图 icon.png
。
css/
文件夹中,切片文件置于slice/
文件夹中,且 css/
和slice/
处于同级。css/
和 slice/
目录不必定要处于项目根目录.png
格式,png8
png24
和 png32
不限