优化你的网站:

当一个网站中的资源(比如:js文件、css文件、图片等)很多时必然影响用户访问速度,这时候你就需要做网站性能优化,你可以选择把资源分开放在不同的服务器上,因为一个资源服务器最多可以同时下载2-3个资源,多个服务器就可以同时下载多个文件,但是这样就给公司带来资金问题。一般大家都会想到对资源文件进行压缩和合并,这个过程可以使用工具,也可以自动构建。今天我讲的就是自动构建压缩css文件,合并图片:

ispriter是一个非常不错的基于node的工具包,支持css合并压缩和图片合并:

特性:

智能提取 background 的 url 和 position 等信息

  智能设置被合并图片的宽高

  智能判断使用了 background-position(使用px为单位)定位的图片并重新定位

  支持已经合并了的精灵图再次合并和定位

  支持图片去重

  支持限制合并后图片的大小

  支持设置合并后的图片间距

  支持将所有图片合并为一张, 同时所有 CSS 文件合并为一个文件

  支持读取 @import 的样式表进行处理

  支持将所有合并了图片的 CSS 统一输出, 减少代码量

  支持对输出的 CSS 进行压缩(使用 clean-css)

  支持排除不需要合并的图片(在 url 后面添加 #unsprite 或者使用 config 文件来配置)

  跳过 background-position 是 right/center/bottom 的图片

  跳过显式的设置平铺方式为 repreat 的图片

  跳过设置了 background-size 的图片

配置文件:

config.json

{
/**
* 工作目录, 可以是相对路径或者绝对路径
*
* @optional
* @default 运行 ispriter 命令时所在的目录
* @example
* "./": 当前运行目录, 默认值
* "../": 当前目录的上一级
* "/data": 根目录下的 data 目录
* "D:\\sprite": D 盘下的 sprite 目录
*/
"workspace": "./", "input": { /**
* 原 cssRoot
* 需要进行精灵图合并的 css 文件路径或文件列表, 单个时使用字符串, 多个时使用数组.
* 路径可使用 ant 风格的路径写法
*
* @required
* @example
* "cssSource": "../css/";
* "cssSource": ["../css/style.css", "../css2/*.css"]
*/
"cssSource": ["./style/*.css"], /**
* 排除不想合并的图片, 可使用通配符
* 也可以直接在 css 文件中, 在不想合并的图片 url 后面添加 #unsprite, iSpriter 会排除该图片, 并把 #unsprite 删除
*
* @optional
* @example
* "ignoreImages": "icons/*"
* "ignoreImages": ["icons/*", "loading.png"]
*/
// "ignoreImages": ["*logo.png"], /**
* 输出的精灵图的格式, 目前只支持输出 png 格式,
* 如果是其他格式, 也是以PNG格式输出, 仅仅把后缀改为所指定后缀
*
* @optional
* @default "png"
*/
"format": "png"
},
"output": { /**
* 原 cssRoot
* 精灵图合并之后, css 文件的输出目录
*
* @optional
* @default "./sprite/css/"
*/
"cssDist": "./css/", /**
* 原 imageRoot
* 生成的精灵图相对于 cssDist 的路径, 最终会变成合并后的的图片路径写在 css 文件中
*
* @optional
* @default "./img/"
* @example
* 如果指定 imageDist 为 "./images/sprite/", 则在输出的 css 中会显示为
* background: url("./images/sprite/sprite_1.png");
*
*/
"imageDist": "./img/", /**
* 原 maxSize
* 单个精灵图的最大大小, 单位 KB,
* 如果合并之后图片的大小超过 maxSingleSize, 则会对图片进行拆分
*
* @optional
* @default 0
* @example
* 如指定 "maxSingleSize": 60, 而生成的精灵图(sprite_all.png)的容量为 80KB,
* 则会把精灵图拆分为 sprite_0.png 和 sprite_1.png 两张
*
*/
"maxSingleSize": 0, /**
* 合成之后, 图片间的空隙, 单位 px
*
* @optional
* @default 0
*/
"margin": 3, /**
* 配置生成的精灵图的前缀
*
* @optional
* @default "sprite_"
*/
"prefix": "sprite_", /**
* 精灵图的输出格式
*
* @optional
* @default "png"
*/
"format": "png", /**
* 配置是否要将所有精灵图合并成为一张, 当有很多 css 文件输入的时候可以使用.
* 为 true 时将所有图片合并为一张, 同时所有 css 文件合并为一个文件.
* 注意: 此时 maxSingleSize 仍然生效, 超过限制时也会进行图片拆分
*
* @optional
* @default false
*/
"combine": false, /**
* 配置是否把合并了图片的样式整合成一条规则, 统一设置 background-image, 例如:
* .cls1, .cls2{
* background-image: url(xxx);
* }
*
* @optional
* @default true
*/
"combineCSSRule": true, /**
* 配置是否压缩 css 文件, 将使用 clean-css 进行压缩, 其值如下:
* false: 不进行压缩;
* true: 用 clean-css 的默认配置进行压缩;
* Object{"keepBreaks": true, ... }: 用指定的配置进行压缩.
*
* @optional
* @default false
*/
"compress": false
}
}

操作步骤:

第一步,安装node,官网:http://nodejs.org/

第二步,安装ispriter包,npm install ispriter -g

第三步,当前目录运行 ispriter -c config.json

这时会多出一个文件,里面有css文件和合并之后的image文件。

详细内容:https://github.com/iazrael/ispriter

ispriter自动构建css-sprite的更多相关文章

  1. 使用compass自动合并css雪碧图(css sprite)

    本文转载自: 使用compass自动合并css雪碧图(css sprite)

  2. css sprite,css雪碧图生成工具V3.0更新

    V3.0主要改进 1.增加了单独添加单张图片以及删除单张图片的功能 2.增加了生成.sprite文件用以保存雪碧图信息 3.增加了打开.sprite文件功能 什么是css sprite CSS spr ...

  3. 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用

    关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用   工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...

  4. Yeoman自动构建js项目

    Aug 19, 2013 Tags: bowergruntJavascriptjsnodejsyeomanyo Comments: 10 Comments Yeoman自动构建js项目 从零开始nod ...

  5. CSS Sprite雪碧图

    为了减少http请求数量,加速网页内容显示,很多网站的导航栏图标.登录框图片等,使用的并不是<image>标签,而是CSS Sprite雪碧图. 两个小例子: 淘宝首页的侧栏图 代码 &l ...

  6. Dockerfile 构建前端nginx应用并用shell脚本实现jenkins自动构建

    Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zh********h.cn RUN rm -f /etc/nginx/nginx.conf COPY n ...

  7. 自动构建工具Gulp

    摘要:  gulp与grunt一样,都是自动构建工具.和grunt相比它更突出一个流的概念,任务是一个接一个执行的.今天就分享如何用gulp做自动化. 安装: gulp也是基于node环境,所以安装g ...

  8. CSS Sprite笔记

    1. 什么是CSS Sprite 将一些碎小的图片拼接为一张大点的图片来使用,目的是为了减少浏览器的http请求次数以提高网页的加载速度.每次请求图片都需要跟服务器建立一次连接,并且浏览器的最大并发请 ...

  9. css sprite应用

    (一)实现简单的淘宝带图标侧边栏效果 <!DOCTYPE html> <html lang="en"> <head> <meta char ...

随机推荐

  1. TP v5中环境变量在项目中的应用

    环境变量,顾名思义就是在不同的系统环境,同一个变量的值可以有所不同. 如开发环境.测试环境与正式环境下,数据库配置.静态资源文件Url前缀.缓存.各种key等配置都不相同,对于提交到仓库中的代码,理论 ...

  2. Hive分组取Top K数据

    阿里交叉面试问到了这个题,当时感觉没有答好,主要是对Hive这块还是不熟悉,其实可以采用row_number()函数. 1.ROW_NUMBER,RANK(),DENSE_RANK() 语法格式:ro ...

  3. VS2017安装PCL1.8.1

    很多使用在windows环境下编译和使用PCL,这样让我想试试,所以就迫不得已的放弃使用Ubuntu环境,但是我还是建议使用Ubuntu系统,毕竟在Ubuntu下几条命令就搞定了,为了迎合在windo ...

  4. php 批量修改文件格式或重命名

    <?php /** * 批量修改文件后缀名 * @param $path 文件夹路径 * @param $sext 原文件后缀名 ($sext=all说明整个目录的所有文件) * @param ...

  5. R-table和tapply函数

    table可统计数据的频数 tapply可根据因子.向量和要计算的函数计算 > class<-c(1,2,3,2,1,2,1,3) > class[1] 1 2 3 > c(8 ...

  6. SAP FI 财务模块 关键用户 考试练习 问卷

    FI概念部分课后练习:(20题, 开卷,本周五内完毕) PC端自我测试: http://www.xiaocar.net/index.php?s=/addon/Exam/Exam/show/exam_i ...

  7. 【Python】windows电脑 python3.6安装lxml库

    1.下载lxml的wheel文件 https://download.lfd.uci.edu/pythonlibs/t5yhk4lc/lxml-4.2.1-cp36-cp36m-win32.whl 其他 ...

  8. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

  9. JDBC流ASCII和二进制数据

    PreparedStatement对象可以使用输入和输出流来提供参数数据.能够将整个文件放入可以容纳大值的数据库列,例如CLOB和BLOB数据类型. 有以下方法可用于流式传输数据 - setAscii ...

  10. c# 生成随机时间

    Random random = new Random((int)(DateTime.Now.Ticks)); ; ) { , ); , ); , ); string tempStr = string. ...