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

WBOY
풀어 주다: 2016-06-24 11:48:28
원래의
1686명이 탐색했습니다.

 

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);
                    }
                }

 如图:

 

 

 执行效果:

 

 

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!