摘要:這里是對自己在中合成雪碧圖的一些的經(jīng)驗和總結(jié)中用于合成雪碧圖的模塊有許多,我只是針對和這兩個做了嘗試,在嘗試過程中發(fā)現(xiàn)寫對文件和文件路徑是關(guān)鍵問題,只有把路徑配對了那幾乎沒有啥問題了。
前言:
css Sprites指的是網(wǎng)頁圖片的一種處理技巧,通常是將一些體積小的不常更換的圖片進(jìn)行處理,目的是為了減少HTTP請求次數(shù),也是優(yōu)化必不可少的工作。
這里是對自己在gulp中合成雪碧圖的一些的經(jīng)驗和總結(jié)!
gulp中用于合成雪碧圖的模塊有許多,我只是針對gulp-css-spriter和gulp.spritesmith這兩個做了嘗試,在嘗試過程中發(fā)現(xiàn)寫對css文件和images文件路徑是關(guān)鍵問題,只有把路徑配對了那幾乎沒有啥問題了。
gulp-css-spritetip:這個模塊很久沒有更新了,下載量也很小,了解一下即可,可以有時候也是可以用到的.
首頁看一下目錄結(jié)構(gòu)方便對照觀察了解:
var gulp=require("gulp"), spriter=require("gulp-css-spriter"); gulp.task("sprite",function(){ var timestamp= + new Date();//生成時間戳 gulp.src("src/spriteTest/css/test.css") .pipe(spriter({ // 生成的spriter的位置 "spriteSheet":"src/spriteTest/dist/images/sprite_"+timestamp+".png", // 生成樣式文件圖片引用地址的路徑 "pathToSpriteSheetFromCSS":"../images/sprite_"+timestamp+".png" })) //圖片合并后css文件中圖片名也響應(yīng)替換掉輸出的css文件的目的地址 .pipe(gulp.dest("src/spriteTest/dist/css/")); /*.pipe(autoprefixer({ browsers:["last 2 Chrome versions", "Safari >0", "Explorer >0", "Edge >0", "Opera >0", "Firefox >=20"], cascade:false, remove:false }))*/ });
說明在編譯css的時候背景圖都加了一個參數(shù)用了說明是要css sprite的;
例如test.css文件中添加了"?__spriter"用來標(biāo)識是要替換的
.icon1:after { background: url("../images/icon1.png?__spriter") no-repeat center center; } .icon2:after { background: url("../images/icon2.png?__spriter") no-repeat center center; } .icon3:after { background: url("../images/icon3.png?__spriter") no-repeat center center; } .icon4:after { background: url("../images/icon4.png?__spriter") no-repeat center center; }
當(dāng)你在npm install gulp-css-sprite --save-dev下該模塊時是默認(rèn)不加標(biāo)識的,從網(wǎng)上了解到修改該模塊可以加上標(biāo)識,這里就不具體說明了,可以參考如下博文自行修改:
gulp.spritesmith博客園:http://www.cnblogs.com/dreamb...
spritesmith的作用就是拼接圖片并生成樣式表,并且還能輸出SASS,Stylus,LESS甚至是JSON。
這個模塊不需要事先寫一個css文件然后根據(jù)css去尋找圖片進(jìn)行合并,這個模塊是將希望合并的小圖先進(jìn)行合并然后根據(jù)cssTemplate去生成css文件
先看文件目錄:
//雪碧圖gulp.spritesmith gulp.task("spritesmith",["clean"],function(){ return gulp.src("src/spriteTest/images/*.png") .pipe(spritesmith({ imgName:"images/sprite20161010.png", //保存合并后圖片的地址 cssName:"css/sprite.css", //保存合并后對于css樣式的地址 padding:20, algorithm:"binary-tree", cssTemplate:"src/spriteTest/handlebarsStr.css" })) .pipe(gulp.dest("http://雪碧圖gulp.spritesmith
gulp.task("spritesmith",["clean"],function(){
return gulp.src("src/spriteTest/images/*.png") .pipe(spritesmith({ imgName:"images/sprite20161010.png", //保存合并后圖片的地址 cssName:"css/sprite.css", //保存合并后對于css樣式的地址 padding:20, algorithm:"binary-tree", cssTemplate:"src/spriteTest/handlebarsStr.css" })) .pipe(gulp.dest("src/spriteTest/dist"));
})"));
})
說明一下路徑問題:
1.imgName上寫的路徑是相對于輸出路徑(gulp.dest),上述代碼輸出的路徑實際是:
"src/spriteTest/dist/images/sprite20161010.png"
2.同理cssName的輸出路徑也是一樣的:
"src/spriteTest/dist/css/sprite.css"
-~v~- 如果不注意這些路徑會不容易找見生成的文件滴!
algorithm:如何排布合并圖片,默認(rèn)是:“binary-tree”
可選參數(shù)有:top-down、left-right、diagonal、alt-diagonal、binary-tree
cssTemplate 值為String或者Function
cssTemplate用了渲染出css文件
官網(wǎng)給的一個簡單demo:
Template String:{{#sprites}} .icon-{{name}}:before { display: block; background-image: url({{{escaped_image}}}); background-position: {{px.offset_x}} {{px.offset_y}}; width: {{px.width}}; height: {{px.height}}; } {{/sprites}}
輸出的為:
.icon-fork:before { display: block; background-image: url(sprite.png); background-position: 0px 0px; width: 32px; height: 32px; } .icon-github:before { /* ... */Template function的demo:
// var yaml = require("js-yaml"); { imgName: "sprite.png", cssName: "sprite.yml", cssTemplate: function (data) { // Convert sprites from an array into an object var spriteObj = {}; data.sprites.forEach(function (sprite) { // Grab the name and store the sprite under it var name = sprite.name; spriteObj[name] = sprite; // Delete the name from the sprite delete sprite.name; }); // Return stringified spriteObj return yaml.safeDump(spriteObj); } }
輸出為:
fork: x: 0 "y": 0 width: 32 height: 32 source_image: /home/todd/github/gulp.spritesmith/docs/images/fork.png image: sprite.png total_width: 64 total_height: 64 escaped_image: sprite.png offset_x: -0.0 offset_y: -0.0 px: x: 0px "y": 0px offset_x: 0px offset_y: 0px height: 32px width: 32px total_height: 64px total_width: 64px github: # ...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/111626.html
生成雪碧圖的代碼 本文的樣式預(yù)處理使用的是stylus 如果須要用到其它類型的預(yù)處理器,可對下面的代碼進(jìn)行修改如果想對雪碧圖的生成原理及參數(shù)有更深入的了解請移步 spritesmith gulp.spritesmith const spritesmith = require(gulp.spritesmith); gulp.task(sprite, () => { var spriteDa...
摘要:插件自動同步瀏覽器插件合并文件的插件壓縮插件壓縮插件壓縮圖片插件壓縮圖片的插件緩存插件,可以加快編譯速度刪除文件插件同步運行任務(wù)插件給屬性添加瀏覽器前綴插件插件合成圖片插件編譯文件,添加屬性瀏覽器前綴,瀏覽器自動更 var gulp = require(gulp);// sass 插件 var sass = require(gulp-sass); // 自動同步瀏覽器插件 var b...
摘要:通過本文,我們將學(xué)習(xí)如何使用來改變開發(fā)流程,從而使開發(fā)更加快速高效。中文網(wǎng)站詳細(xì)入門教程使用是基于的,需要要安裝為了確保依賴環(huán)境正確,我們先執(zhí)行幾個簡單的命令檢查。詳盡使用參見官方文檔,中文文檔項目地址 為了UED前端團(tuán)隊更好的協(xié)作開發(fā)同時提高項目編碼質(zhì)量,我們需要將Web前端使用工程化方式構(gòu)建; 目前需要一些簡單的功能: 1. 壓縮HTML 2. 檢查JS 3. 編譯SA...
摘要:最近做一個教育類的項目開發(fā),有個界面是關(guān)于興趣愛好選擇,由于不希望用絕對定位將標(biāo)簽的數(shù)量和位置固定,故根據(jù)一些簡單的計算封裝了隨著標(biāo)簽數(shù)量增減的動態(tài)定位,然后就有了這個生成器。 最近做一個教育類的H5項目開發(fā),有個UI界面是關(guān)于興趣愛好選擇,由于不希望用絕對定位將標(biāo)簽的數(shù)量和位置固定,故根據(jù)一些簡單的計算封裝了隨著標(biāo)簽數(shù)量增減的動態(tài)定位,然后就有了這個生成器。遺憾的是,通常這種UI只是...
摘要:但它仍有缺陷字體需要加載資源有時候可能會出現(xiàn)鋸齒只能被渲染成單色或者的漸變色所以我們要繼續(xù)進(jìn)化。直立人之使用,這里所謂的進(jìn)化并不是本身的進(jìn)化,因為并不晚于。隨著外界因素的進(jìn)化,的淘汰,的開始,的機會變到來了。 南方古猿之 png sprite showImg(https://segmentfault.com/img/remote/1460000008199114?w=822&h=288...
閱讀 3228·2021-11-15 11:37
閱讀 2449·2021-09-29 09:48
閱讀 3813·2021-09-22 15:55
閱讀 3014·2021-09-22 10:02
閱讀 2636·2021-08-25 09:40
閱讀 3225·2021-08-03 14:03
閱讀 1691·2019-08-29 13:11
閱讀 1570·2019-08-29 12:49