gulp-css-spriter 将css代码中的切片图片合并成雪碧图

NPM地址:https://www.npmjs.com/package/gulp-css-spriter/

配置gulpfile.js:

var gulp = require(‘gulp‘),

minifyCSS = require(‘gulp-minify-css‘),
    spriter = require(‘gulp-css-spriter‘);

gulp.task(‘css‘, function() {

var timestamp = +new Date();
    //需要自动合并雪碧图的样式文件
    return gulp.src(‘./src/css/style.css‘)
        .pipe(spriter({
            // 生成的spriter的位置
            ‘spriteSheet‘: ‘./dist/images/sprite‘+timestamp+‘.png‘,
            // 生成样式文件图片引用地址的路径
            // 如下将生产:backgound:url(../images/sprite20324232.png)
            ‘pathToSpriteSheetFromCSS‘: ‘../images/sprite‘+timestamp+‘.png‘
        }))
        .pipe(minifyCSS())
        //产出路径
        .pipe(gulp.dest(‘./dist‘));
});

技巧 :

gulp-css-spriter默认会对样式文件里,所有的background/background-image的图片合并,

但实际项目中,我们不是所有的图片都需要合并。

background-image: url(../slice/p1-3.png?__spriter);//有?__spriter后缀的合并

background-image: url(../slice/p-cao1.png); //不合并

修改下面文件可以按需合并。

node_modules\gulp-css-spriter\lib\map-over-styles-and-transform-background-image-declarations.js

48行开始的if-else if代码块中,替换为下面代码:

// background-image always has a url 且判断url是否有?__spriter后缀

if(transformedDeclaration.property === ‘background-image‘ && /\?__spriter/i.test(transformedDeclaration.value)) {

transformedDeclaration.value = transformedDeclaration.value.replace(‘?__spriter‘,‘‘);
                    return cb(transformedDeclaration, declarationIndex, declarations);
                }
                // Background is a shorthand property so make sure `url()` is in there 且判断url是否有?__spriter后缀
                else if(transformedDeclaration.property === ‘background‘ && /\?__spriter/i.test(transformedDeclaration.value)) {

transformedDeclaration.value = transformedDeclaration.value.replace(‘?__spriter‘,‘‘);
                    var hasImageValue = spriterUtil.backgroundURLRegex.test(transformedDeclaration.value);

if(hasImageValue) {
                        return cb(transformedDeclaration, declarationIndex, declarations);
                    }
                }

如图:

执行效果:

时间: 2024-11-06 22:18:21

gulp-css-spriter 将css代码中的切片图片合并成雪碧图的相关文章

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

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

gulp多张图片自动合成雪碧图

相信做前端的同学都做过这样的事情,为优化图片,减少请求会把拿到切好的图标图片,通过ps(或者其他工具)把图片合并到一张图里面,再通过css定位把对于的样式写出来引用的html里面.对于一些图片较多的项目,这个过程可能要花费我们一天的时间,来实现这步.今天我给大家带来一个工具,将这一步缩短到几秒钟就能完成,究竟是什么工具这么神奇呢,他就是gulp的一个插件gulp.spritesmith.下面一张图来说明他能做什么. 看到这个图片介绍,相信大家已经对gulp.spritesmith能做到什么一目了

grunt-css-sprite css 代码中的切片合并

安装插件:npm install grunt-css-sprite --save-dev grunt-css-sprite主要功能:1.对 css 文件进行处理,收集切片序列,生成雪碧图2.在原css代码中为切片添加background-position属性3.生成用于高清设备的高清雪碧图,并在css文件末尾追加媒体查询代码4.生成高清设备雪碧图,使用 image-set5.支持选择器提取,进一步优化CSS文件大小6.在引用雪碧图的位置打上时间戳7.在样式末尾追加时间戳8.按照时间戳命名文件 配

CSS Sprites ——雪碧图的使用方法

首先解释下CSS Sprites是什么:有称CSS精灵,有称CSS雪碧的,无论叫什么,他的作用就是把网页上很多小图标放到一张图片里面,然后通过CSS里面的background-position来控制每个图片的坐标,这样不但减少http请求,而且还降低了图片的大小,加快图片的加载速度,对前端开发的朋友来说是必备技能.更详细的解释请到[百度百科]围观. 雪碧图使用场景 1.静态图片,不随用户信息的变化而变化 2.小图片,图片容量比较小 3.加载量比较大 注:一些大图片.有动态效果图片无需使用雪碧图

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

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

CSS Sprite雪碧图应用

CSS Sprite CSS雪碧图 为了减少http请求数量,加速网页内容显示,很多网站的导航栏图标.登录框图片等,使用的并不是<image>标签,而是CSS Sprite雪碧图. 雪碧图使用场景: 1.静态图片,不随用户信息的变化而变化 2.小图片,图片容量比较小 3.加载数量比较大 4.一些大图不建议拼成雪碧图 (减少HTTP请求数,加速内容显示) 雪碧图实现原理:background-position 移动位置时,坐标都需要设置成负值 雪碧图生成方式 1.PS手动拼图 2.大项目通常使用

CSS基础知识之背景图片样式属性、雪碧图、列表导航栏、超链接的伪类样式、盒子模型、overflow、圆角弧度

目录: 背景图片样式属性 雪碧图 列表导航栏 超链接的伪类样式 盒子模型. overflow. 圆角弧度 背景图片样式属性: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> #imgContainer { border: 20px dotted yellow; padding: 50px; height: 400p

【HTML+CSS】CSS Sprite雪碧图

1. 雪碧图的使用场景 (1). 静态图片,不随用户信息的变化而变化 (2). 小图片,图片容量比较小 (3). 加载量比较大 一些大图不建议拼成雪碧图,例如淘宝网站的导航图片都是使用的雪碧图. 2. 使用雪碧图可以减少http请求数量,加速内容显示.每请求一次,就会和服务器链接一次,建立链接时需要额外时间的. 3. 实现原理 使用background-position属性: 需要使用雪碧图的时候,便宜x和y的值就可以了. 4. 实现方式: 一种方式是使用PS手动拼图: 另一种方式是使用spri

CSS中的背景、雪碧图、超链接的伪类样式

一.背景 1.背景颜色 background-color: red; 2.背景图片 background-image: url("../../img/l1.png"); 3.图片填充 background-repeat: no-repeat;(有这三个常用的属性值: no-repeat.repeat-x.repeat-y) 4.背景图片大小 background-size:100% 100%: cover(覆盖):(先让图片水平填满容器)图片等比例缩放,直到最小部分填满容器有可能会出现