css sprite合并_html/css_WEB-ITnose
程序员文章站
2022-06-04 12:44:22
...
今天node.js发布了v4.0.0,兴高采烈地升了级,跑koa的时候再也不用node --harmony了,真是nice啊。
下午同事提了个css sprite的需求,要求写的时候是引用小图,发布的时候用工具合成大图,减少合并的工作量。fis3能做这个,果断用起。
npm install fis3 -g
fis3 release -d ./dist
duang!!!有警告,csssprite这个模块不支持最新版的node.js。
没关系,换个版本继续搞起,然后就ok了。
对比生成的图片和样式文件,图片合并了,样式文件也替换了,挺nice的。
我天真地以为事情到这就完了,过了一会发现项目跑不起来,文件引用变成了绝对路径。
对比文件发现fis3把background:url(../images)都替换成了background:url(/images),就是fis团队说的三种语言中的资源定位。
但是我要的只是雪碧图的功能啊,fis那一整套的解决方案我不需要,把路径都给替换了还怎么玩。
翻了fis3的api,没发现有去掉这个替换功能的,扒了源码也没发现有相关配置项。
想自己用gulp写个,把这功能抄过来。仔细看了源码,发现这模块深度依赖fis,还针对图片位置做了性能优化,好麻烦。
折腾了一番,决定对这流程再包装一次。
还是用fis3来生成雪碧图,完了gulp跑一遍,把css路径给改回来,顺便把css和雪碧图文件挪个位置,再把fis3生成的目录删了。
代码大致像这个样子:
gulp.task('sprite',function(){ return shell.task('fis3 release -d ./dist')();});gulp.task('replace',function(){ return gulp.src(['./dist/css/**/*']) .pipe(through.obj(function(file,enc,cb){ replaceImageUrl(); this.push(file); cb(); })) .pipe(gulp.dest('./css/'))});gulp.task('default',function(){ return sequence( 'sprite', 'replace', 'clean' )();})
折腾了一下午,记录一下。
推荐阅读
-
实现一个三列布局(左右侧固定,中间自适应宽度)_html/css_WEB-ITnose
-
密码修改不能实现,大神们快来看看_html/css_WEB-ITnose
-
css图片响应式+垂直水平居中2_html/css_WEB-ITnose
-
HTML5 canvas在微信浏览器上图层问题_html/css_WEB-ITnose
-
网页图片垂直剧中 等比例缩放 黑白显示_html/css_WEB-ITnose
-
css reset重置样式有那么重要吗?_html/css_WEB-ITnose
-
浏览器的渲染原理简介_html/css_WEB-ITnose
-
让ie6对png透明图片支持起来_html/css_WEB-ITnose
-
最容易让人误解的10个 CSS 选择器_html/css_WEB-ITnose
-
外部链接微信打开_html/css_WEB-ITnose