CSS Sprite小图片自动合并工具

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

NodeJS css-sprite

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

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

安装

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

npm install [email protected]

使用时需要创建一个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的图片合并工具还有一些,但大多依赖第三方图像处理库,此处略。

时间: 2024-10-11 03:43:37

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

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

默认情况下,通过HTML代码的BODY标签设置好背景图片<body background="x.jpg"> 后,图片会自动横向和纵向平铺.这就会产生一些美观上的问题. XP人提供CSS代码如下,放在页面头部即可,仅供参考: <style type="text/css"> body { background:url(/img/background.png); background-repeat: repeat-x; background-pos

如何一个td或table里的图片等比例缩小(css问题)图片自动缩放

网上说了一大堆,说什么设置div的宽度,特别是这篇: http://www.divcss5.com/wenji/w632.shtml 害死人,我们为什么要自动缩放?还不是手机屏幕太多分辨率了?你指定了宽度还怎么缩放?你妹的. 经过我的多次实验,发现一个比较好的方法, 在ios微信/浏览器和android微信/浏览器都可以完美显示,那就是: 1.div不做要求,内容居中就好了 2.放一个table进去,table的width=100%,这是最关键的 3.在td放一个img,img的max-widt

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

其实很多时候,我们写完css规则之后,我们思考的无非就是3件事情: 验证 美化 压缩 当然无论是我们自己做这样的工具还是寻找一些比较好的成熟的工具,都有几个期望: 是否支持一些ie下的hack方式: *property:value _property:value property:valye\9 是否支持@import 是否支持@charset "UTF-8" 是否支持!important 等等..... 下面简单介绍2款我比较常用工具: 1.CSSTidy 可以对css进行压缩,可以

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

什么是CSS Sprite精灵? 是用于前端的一种图片应用技术,通常情况,我们的开发的网页或许有很多张图片,假如在一个页面上有50多张小图片,这意味着浏览器要逐个下载50张图片.Css Sprite它允许你将一个页面涉及到的所有零星图片都包含到一张图中,这样一来,当访问页面时,就只需要下载1张图片了,这显然大大减低了服务器请求压力. 这个技术加速网页响应速度,加速的关键,不是降低质量,而是减少个数.传统切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算.

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

css雪碧图又叫css精灵或css sprite,是一种背景图片的拼合技术.使用css雪碧图,能够减少页面的请求数.降低图片占用的字节,以此来达到提升页面访问速度的目的.但是它也有令人诟病的地方,就是拼图和后期维护的成本比较大.也正是因为这一点,导致很多开发者懒于使用css雪碧图. 对于这种耗时.枯燥.重复性的工作,最好的解决方法还是交给工具去处理.本文就介绍下怎样使用compass来自动合并css雪碧图. 安装compass 首先请确认电脑已经安装ruby及sass环境,ruby及sass的安

前端优化总结-服务器端-减少Http次数-图片合成css sprite

先上一张整洁的前端优化总结图(之前的一篇总结图太烂了) 以前切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算.客户每显示一张图片都会向服务器发送请求. 所以,图片越多请求次数越多,造成延迟的可能性也就越大.所以在这里我们要做的就是把网页中常用的图片整合到一张图片文件中,再利用CSS的“backg round-image”,“background- repeat”,“background-position”的组合进行背景定位,background-pos

使用grunt对css中的background图片自动生成雪碧图

公司研发的系统为B/S架构,用户使用浏览器访问系统时,使用浏览器自带工具查看,对图片的请求数极多,多为小图片. 今天想对这个现状进行改善,网上查到一种雪碧图的方案,其实就是使用工具将数量很多的小图片拼成一张大图片,然后css里都引用这张大图片,并指定显示该图片的某一个区域,但这个方案需要手工作很多处理. 于是就想到能不能用目前比较成熟的grunt对前端样式文件自动进行处理,自动生成雪碧图,自动修改样式文件.一搜索果然找到了方案,下面为Gruntfile.js文件的片断: module.expor

CSS 和 JS 文件合并工具

写 CSS 和 JavaScript 的时候, 我们会遇到一个两难的局面: 要么将代码写在一个大文件, 要么将代码分成多个文件. 前者导致文件难以管理, 代码复用性差, 后者则因为需要在载入多个文件令页面性能下降. 我们期望可以将代码细分成多个模块, 而在使用的时候可以合而为一. 本文会介绍一个 CSS 和 JS 的合并工具, 对模块化的文件进行管理. CSS 和 JS 合并工具的发展 对于 CSS/JS 合并和压缩的问题, 有很多解决方案, 我所在的团队也经历了几个阶段. 网站刚刚搭建的时候,

使用compass自动拼css sprite

使用compass自动拼css sprite css sprite (css 雪碧)又叫css精灵,是一种图片拼合技术.多用在图标上,把几个图标拼成一个图片,页面加载的时候只需要load拼好的图片,然后使用background-position配合width.height来显示不同的图标.这样做可以减少页面请求数.但是,想想把一个个图标从psd上扣下来,合到一个图上,然后还要慢慢算background-position,这也真是醉了,而且后期如果改了图标,又要重新拼一次,拼完再算一次backgr