Grunt中批量无损压缩图片插件--grunt-sprite
这是什么
这是一个帮助前端开发工程师将css代码中的切片合并成雪碧图的工具,它的主要功能是:
- 使用二叉树排列算法,对css文件进行处理,收集切片序列,生成雪碧图
- 在原css代码中为切片添加background-position属性
- 生成用于高清设备的高清雪碧图,并在css文件末尾追加媒体查询代码
- 在引用雪碧图的位置打上时间戳
- 在样式末尾追加时间戳
安装依赖
grunt-sprite 使用 spritesmith 作为内部核心算法,根据官方文档中提到的基本依赖,须要安装Graphics Magick(gm) 和 PhantomJS 两个依赖。
Graphics Magick(gm)
GraphicsMagick为grunt-sprite提供用于图像处理的框架,安装方法:Mac
// 安装GM图形库
brew install GraphicsMagick
Windows
前往官方网站下载安装GM图形库
PhantomJS
PhantomJS为spritesmith提供 CSS选择器 与 JSON 的支持,安装方法: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文件置于
css/文件夹中,切片文件置于slice/文件夹中,且css/和slice/处于同级。 css/和slice/目录不一定要处于项目根目录- 理论上所有的切片都应该是
.png格式,png8png24和png32不限 - 理论上高清切片都应该是源切片尺寸的2倍,所以所有高清切片的尺寸宽和高都必须是偶数
- 生成后的雪碧图将以源css文件名来命名
Grunt中批量无损压缩图片插件--grunt-sprite的更多相关文章
- Grunt中批量无损压缩图片插件--Grunt-contrib-imagemin
Photoshop 切出的图片,无论是 PNG 还是 JPEG/JPG 格式,都含有许多相关信息,又或多余的颜色值,这些信息和颜色值,对网页前端并没有用处,反而增加图片大小,所以 Google Pag ...
- word中批量修改图片大小的两个方法
前言: 对于把ppt的内容拷贝到word中: 对ppt的一页进行复制,然后粘贴到word中 如果要的是ppt运行过程中的内容,在qq运行的情况下,按Ctrl+Alt+A截屏,按勾,然后可以直接粘贴到w ...
- [Word]中批量修改图片大小和缩放比例方法
最近小编遇到一个问题:需要将一篇厘米.打开.宏名起好了,单击"创建"进入.返回word,工具-宏-宏(或者直接按Alt+F8),再次进入宏的界面,选择刚才编辑好的宏,并单击&quo ...
- word中批量修改图片大小
一,在word中按alt+f11组合键,进入VBA模式二,在左边的工程资源管理器中找到你的word文档,在其上右键/添加/模块三,把下面代码复制,粘贴进去.四,更改数值, 改一下宽度和高度数值(10) ...
- 在world中批量调整图片的大小
1.Alt+F8调出vb宏 创建一个宏名字,setsize 粘贴代码后保存关闭. Sub setsize() ' ' setsize 宏 ' ' Dim iSha As InlineShape Fo ...
- grunt中常见的插件
/** * 需要用到的文件夹有 js(src) css image html */ gulp是一种自动化构建工具,可以增强我们的工作流程,他是基于 Node.js 构建的,与gruntjs相比,gul ...
- PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件
PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...
- Linux中如何使用gThumb批量调整图片大小
Linux中如何使用gThumb批量调整图片大小 导读 如果你的工作涉及到图片编辑和处理,就一定会有同时对多张图片进行批量大小调整的经历.虽然大多数图片编辑应用都能够非常容易地批量调整多张图片,但对于 ...
- Aps.net中基于bootstrapt图片上传插件的应用
Aps.net中基于bootstrapt图片上传插件的应用 在最近的项目中需要使用一个图片上传的功能,而且是多张图片同时上传到服务器的文件夹中,将图片路径存放在数据库中.为了外观好看使用了bootst ...
随机推荐
- 在linux命令行利用SecureCRT上传下载文件
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地?与ssh有关的 ...
- 接口调用 读取图片报错 Access to the path '' is denied.解决方案
调用接口 读取服务器上 图片 报错: Server was unable to process request. ---> Access to the path '图片路径' is denied ...
- sql server or Oracle: table MS_Description
--SQL Server表描述 及 字段描述的增.删.改.查询 --sql server 2000系统表sysproperties在SQL 2008中无效的问题 今天无意中在网上发现Sqlserver ...
- WHILE (Transact-SQL)
---循环 declare @n int declare @rowcount int declare @name varchar(50) create table #temp ( id int ide ...
- MySQL数据备份与还原(mysqldump)
一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...
- 如何对MySQL数据库中的数据进行实时同步
- 制作Makefile中 ** missing separator 错误解决
非常简单就是根据提示,在这一行的前面摁Tab键 错误如上图所示:
- SMBus Host Controller not enabled!
今天去官网下载最新的ubuntu ubuntukylin-16.10-desktop-amd64.iso,下载后vm 运行,安装后结果报了这个问题 之后google搜索得到答案: 1.复制 cp ...
- androidcookie
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { webSettings.setAllowFileAccessFrom ...
- js 生成md5
原理比较复杂,不过人类区别与其他动物是因为会用工具,所以,把下面代码复制保存一下就好了. <script> var hex_chr = "0123456789abcdef&quo ...