• 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_modulesgulp-css-spriterlibmap-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);
                        }
                    }

     如图:

     

     执行效果:

     

  • 相关阅读:
    Spring mvc shiro 整合
    Md5
    常用的加密解密算法
    Base64
    java SHA1WithRSA 算法
    jquery使用on绑定change事件,获取input实时输入值
    C#实现将商品金额小写转换成大写
    IIS配置404页面配置,IIS自定义404页面
    HttpWebRequest 基础连接已经关闭: 接收时发生错误
    js css等静态文件版本控制,一处配置多处更新.net版【原创】
  • 原文地址:https://www.cnblogs.com/dreamback/p/gulp-css-spriter.html
Copyright © 2020-2023  润新知