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 ...
随机推荐
- Springboot简单整合Rabbit
两个项目.分别是生产者和消费者项目 .首先引入依赖.两边pom都一样 第一次练习,启动生产者后,再启动消费者,一直报找不到 队列的声明. 后排查发现是 需要现在生产者这边浏览器访问一次生产消息的方法 ...
- OOP 第一章作业总结
程序设计结构分析 类图分析 第一次作业 由于第一次作业完成的功能比较简单,而且出于对面向对象设计理念不熟悉(其实现在也不是很熟悉,逃),整个程序设计的非常简单.通过类图(见下)可以看出,程序只有两个类 ...
- 爬虫之lxml - etree - xpath的使用
# 解析原理: # - 获取页面源码数据 # - 实例化一个etree对象,并且将页面源码数据加载到该对象中 # - 调用该对象的xpath方法进行指定标签定位 # - xpath函数必须结合着xpa ...
- javascript截取字符串长度
<html> <head> <meta charset="UTF-8"/> <title>截取字串长度</title> ...
- JQuery总结摘要
一 概述 1.JQuery是什么? JQuery是一个JavaScript库,简化了JS操作,扩展了JS功能. 2.分离原则 JQuery遵循导入与使用分离的原则,即使用一个<script> ...
- filter() 方法创建一个新数组
filter快速过滤创建一个新数组 var new_array = arr.filter(callback(element[, index[, array]])[, thisArg]) 参数节 cal ...
- 表格 滚动条 (tbody部分滚动)
本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 html <table> <thead> < ...
- ArcGIS Server 10.1发布要素服务(FeatureLayer server)时遇到的数据库注册问题
在发布要素服务的最后一步遇到了一个问题: SEVERITY STATUS CODE DESCRIPTION NAME TYPE DATA FRAME High Unresolved 00090 Fea ...
- ANN神经网络——实现异或XOR (Python实现)
一.Introduction Perceptron can represent AND,OR,NOT 用初中的线性规划问题理解 异或的里程碑意义 想学的通透,先学历史! 据说在人工神经网络(artif ...
- C/C++读写excel文件 的几种方式
因为有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看. http://blog.csdn.net/fullsail/article/details/8449448 C++读取Exc ...