css-sprite是将css样式中零星的小图标,小图片合并成大图显示,这样能减小服务器并发连接数,减小服务器负载和带宽使用,有很高的实用价值。这里介绍一些自动合并图片并生成样式的工具。

NodeJS css-sprite

css-sprite是一个基于NodeJS实现的css切图自动合并工具,能自动将小图片合成大图,支持retina sprites和base64输出格式。

注* retina sprites视网膜屏幕指的是接近人眼能够直观感受到的基础色素级别的输出格式。Base64是将图片转化成Base64字符串嵌入CSS文件中。

安装

注* 测试0.9.0可在Winodws上是正常安装的

npm install css-sprite@0.9.0

使用时需要创建一个js文件, 此js程序将web/icon目录下的png图标合并到web/img下,并生成web/css/icons.css样式文件

var sprite = require('css-sprite');
sprite.create({
  src       : ['web/icon/*.png'],  //小图标所在目录
  out       : 'web/img',           //大图标所在目录
  name      : 'icons',             //大图标名称
  style     : 'web/css/icons.css', //样式文件
  prefix    : 'icon',   //样式前辍
  processor : 'css',    //文件格式: css; 支持less,sass,scss,stylus等扩展样式语言
  cssPath   : '../img', //css文件相对于图标文件的相对路径
  margin    : 10        //图片间隔,默认垂直排列
}, function () {
  console.log('done');
});

输出的文件大概如下:

.icon {
  background-image: url('../img/icons.png');
} .icon-first {
  background-position: -10px -44px;
  width: 20px;
  height: 20px;
} .icon-last {
  background-position: -10px -84px;
  width: 20px;
  height: 20px;
}

css-sprite 基于node.js和npm,可扩展性强,如果你不想要这种输出格式,你可以更改mustcache的css模板设置:

node_modules\css-sprite\lib\templates\css.mustache

{{#items}}
{{class}} {
  background-image: url('{{{escaped_image}}}.png');
  background-position: {{px.offset_x}} {{px.offset_y}};
}
{{/items}}
这样输出就会类似于:

.icon-account {
  background-image: url('../img/icons.png');
  background-position: -10px -10px;
}
.icon-dashboard {
  background-image: url('../img/icons.png');
  background-position: -10px -54px;
}

当你有些icon图标不想使用自动合并后的图片时,用这种方法可以让每一个自动合并的图标样式分别复写图片地址,还是非常方便的。

css-sprite支持众多CSS扩展样式语言,如css, less, sass, scss 或 stylus,如输出设置为scss时 ("processor: scss" )的使用:

@import 'sprite'; // 导入自动生成的scss文件 (sprite.sc ss)

// camera 图标 ($camera对应源文件目录的 camera.png 文件)
.icon-camera {
@include sprite($camera);
} // cart 图标 (指定目录中的 cart.png 图片)
.icon-cart {
@include sprite($cart);
}

css-sprites可支持 Gulp/Grunt 构建工具扩展, 还可支持自定义输出模板等,功能丰富,但因较新,有些版本可能不稳定。并且此工具支持的输出格式太多,不够小巧,包文件偏大。

注* 基于Node.JS的图片合并工具还有一些,但大多依赖第三方图像处理库,此处略。

CSS Sprite小图片自动合并工具的更多相关文章

  1. 如何通过CSS实现背景图片自动平铺或拉伸至整个屏幕(自适应大小)

    默认情况下,通过HTML代码的BODY标签设置好背景图片<body background="x.jpg"> 后,图片会自动横向和纵向平铺.这就会产生一些美观上的问题. ...

  2. css美化、优化、合并工具推荐

    其实很多时候,我们写完css规则之后,我们思考的无非就是3件事情: 验证 美化 压缩 当然无论是我们自己做这样的工具还是寻找一些比较好的成熟的工具,都有几个期望: 是否支持一些ie下的hack方式: ...

  3. 使用雪碧图Css Sprite精灵 | 加速网页响应速度

    什么是CSS Sprite精灵? 是用于前端的一种图片应用技术,通常情况,我们的开发的网页或许有很多张图片,假如在一个页面上有50多张小图片,这意味着浏览器要逐个下载50张图片.Css Sprite它 ...

  4. Gulp 之图片压缩合并

    同事需要处理很多的图片,由于UI那边提供图片比较大,为了性能好一点,程序包小一点,因此希望我帮忙做成小程序来完成此工作. 其实之前做过一个grunt写的图片压缩合并工具,当时是为了处理270多个国家/ ...

  5. 【css样式生成 & 图片合并压缩工具】Sprite,你值得拥有

    好久好久没有更新博客了,越来越懒...话说懒也有懒的好处,懒的时候你可能会想着用些神马方法来帮你偷懒.没错,下面就给大家介绍个博主前不久开发的[css样式生成 & 图片合并压缩工具]Spirt ...

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

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

  7. CSS 和 JS 文件合并工具

    写 CSS 和 JavaScript 的时候, 我们会遇到一个两难的局面: 要么将代码写在一个大文件, 要么将代码分成多个文件. 前者导致文件难以管理, 代码复用性差, 后者则因为需要在载入多个文件令 ...

  8. 合并小图片利器TexturePacker GUI

    合并小图片,能够非常大的节省网络开销.尤其如今的站点非常喜欢使用大量的小图标来做一些友好提示.当然使用图片文字也是一种选择. 只是这里推荐的是TexturePacker GUI ,这个确实是一款利器. ...

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

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

随机推荐

  1. CSS实现页面背景自动切换功能

    From here:http://xiaomiya.iteye.com/blog/2047728 请看效果图: 完整代码如下: <!DOCTYPE HTML> <html> & ...

  2. 04737_C++程序设计_第2章_从结构到类的演变

    例2.1 使用成员函数的实例. #define _SCL_SECURE_NO_WARNINGS #include <iostream> using namespace std; struc ...

  3. Risk(最短路)

    Risk Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2915   Accepted: 1352 Description ...

  4. JavaScript-1.最简单的程序之网页弹出对话框,显示为Warning---ShinePans

    代码: <html> <head> <meta http-equiv="content-type" content="text/html;c ...

  5. Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://127.0.0.1:3306/test'

    原来的配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  6. MFC CListCtrl得到ctrl,shift多选的行号

    vector<int> selVect; int count = m_consumeList.GetItemCount(); //你的列表多少行 for (int i = 0; i< ...

  7. MySQL数据库mysqlcheck的使用方法

    MySQL数据库mysqlcheck的使用方法的相关知识是本文我们主要要介绍的内容,我们知道,mysqlcheck,是mysql自带的可以检查和修复MyISAM表,并且它还可以优化和分析表,mysql ...

  8. Customizing Zend Studio Using the Welcome Page

    Customizing Zend Studio Using the Welcome Page Zend Studio enables you to add or remove plugins from ...

  9. 再谈PHP、Python与Ruby

    一句话总结 简单地总结: 假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成为一个高效工程师,推荐 Python. 假如你想让他爱上他的工作,推荐 Ruby. 语言的选择 编程语言非常重要 ...

  10. 如何寻找java的安装路径问题

    关于不知道JAVA安装在linux的哪 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans ...