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 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 构建工具扩展, 还可支持自定义输出模板等,功能丰富,但因较新,有些版本可能不稳定。并且此工具支持的输出格式太多,不够小巧,包文件偏大。
CSS Sprite小图片自动合并工具的更多相关文章
- 如何通过CSS实现背景图片自动平铺或拉伸至整个屏幕(自适应大小)
默认情况下,通过HTML代码的BODY标签设置好背景图片<body background="x.jpg"> 后,图片会自动横向和纵向平铺.这就会产生一些美观上的问题. ...
- css美化、优化、合并工具推荐
其实很多时候,我们写完css规则之后,我们思考的无非就是3件事情: 验证 美化 压缩 当然无论是我们自己做这样的工具还是寻找一些比较好的成熟的工具,都有几个期望: 是否支持一些ie下的hack方式: ...
- 使用雪碧图Css Sprite精灵 | 加速网页响应速度
什么是CSS Sprite精灵? 是用于前端的一种图片应用技术,通常情况,我们的开发的网页或许有很多张图片,假如在一个页面上有50多张小图片,这意味着浏览器要逐个下载50张图片.Css Sprite它 ...
- Gulp 之图片压缩合并
同事需要处理很多的图片,由于UI那边提供图片比较大,为了性能好一点,程序包小一点,因此希望我帮忙做成小程序来完成此工作. 其实之前做过一个grunt写的图片压缩合并工具,当时是为了处理270多个国家/ ...
- 【css样式生成 & 图片合并压缩工具】Sprite,你值得拥有
好久好久没有更新博客了,越来越懒...话说懒也有懒的好处,懒的时候你可能会想着用些神马方法来帮你偷懒.没错,下面就给大家介绍个博主前不久开发的[css样式生成 & 图片合并压缩工具]Spirt ...
- 使用compass自动合并css雪碧图(css sprite)
本文转载自: 使用compass自动合并css雪碧图(css sprite)
- CSS 和 JS 文件合并工具
写 CSS 和 JavaScript 的时候, 我们会遇到一个两难的局面: 要么将代码写在一个大文件, 要么将代码分成多个文件. 前者导致文件难以管理, 代码复用性差, 后者则因为需要在载入多个文件令 ...
- 合并小图片利器TexturePacker GUI
合并小图片,能够非常大的节省网络开销.尤其如今的站点非常喜欢使用大量的小图标来做一些友好提示.当然使用图片文字也是一种选择. 只是这里推荐的是TexturePacker GUI ,这个确实是一款利器. ...
- css sprite,css雪碧图生成工具V3.0更新
V3.0主要改进 1.增加了单独添加单张图片以及删除单张图片的功能 2.增加了生成.sprite文件用以保存雪碧图信息 3.增加了打开.sprite文件功能 什么是css sprite CSS spr ...
随机推荐
- JScript中的prototype(原型)属性研究
今天看到同事使用js中的Prototype,感觉很是新鲜.由此想深入学习一下prototype(英['prəʊtətaɪp] 美['protə'taɪp]n. 原型:标准,模范),在学习prototy ...
- POJ 2029 DP || 暴力
在大矩形中找一个小矩形 使小矩形包括的*最多 暴力或者DP 水题 暴力: #include "stdio.h" #include "string.h" int ...
- Flash,一次Bug的思考
我绝对不算是F黑,大部分时候,我还是很挺Flash平台的,Flash提供了很好的跨平台特性以及Flash Player11后的GPU加速.Stage3D等等,对于开发者来说,绝对让人欣喜若狂(对我是这 ...
- uva 10453 - Make Palindrome(dp)
题目链接:10453 - Make Palindrome 题目大意:给出一个字符串,通过插入字符使得原字符串变成一个回文串,要求插入的字符个数最小,并且输出最后生成的回文串. 解题思路:和uva 10 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式宣布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件.广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...
- Java中如何把两个数组合并为一个
在Java中,如何把两个String[]合并为一个? 看起来是一个很简单的问题.但是如何才能把代码写得高效简洁,却还是值得思考的.这里介绍四种方法,请参考选用. 一.apache-commons 这是 ...
- 创建SDE表空间
创建空间数据存储类型为ST_Geometry的要素类有2种方法:1)使用SDE创建要素类从9.3 开始,默认创建的要素类都使用ST_Geometry存储空间数据,9.3 版本之前,可以通过配置dbtu ...
- OC语法4——自定义构造方法,description方法
自定义构造方法: 我们已经知道创建对象分两步,1:在内存中开辟存储空间,并把地址存储在指针变量里,2:调用指针变量的初始化方法init初始化该对象. Student * stu = [Student ...
- SQLServer 中实现类似MySQL中的group_concat函数的功能
SQLServer中没有MySQL中的group_concat函数,可以把分组的数据连接在一起. 后在网上查找,找到了可以实现此功能的方法,特此记录下. SELECT a, stuff((SELECT ...
- php中如何输出当前服务器的(中国)当前时间
date_default_timezone_set('PRC');//PRC是什么?PRC是中华人民共和国啊-_- echo "今天是".date("Y年m月d日&quo ...