簡介html
SVG便可縮放矢量圖形 (Scalable Vector Graphics)的簡稱, 是一種用來描述二維矢量圖形的XML標記語言. SVG圖形不依賴於分辨率, 所以圖形不會由於放大而顯示出明顯的鋸齒邊緣.使用svg格式咱們能夠直接用代碼來描繪圖像,能夠用任何文字處理工具打開svg圖像,經過改變部分代碼來使圖像具備交互功能,並能夠隨時插入到HTML中經過瀏覽器來瀏覽。git
優勢:github
缺點:npm
svg spritesgulp
CSS sprites咱們都很熟悉,將多個圖標合在一個圖片文件上,而後經過CSS設置背景圖片的座標來顯示對應的部分.CSS sprites技術較成熟,兼容性好。可是缺點就是不夠靈活,圖標都是切死的,並且放大縮小會顯示鋸齒。因此若是需求裏有圖標是可變化的,能夠嘗試使用SVG圖。若是有多個SVG圖,可以使用gulp-svg-symbols工具自動生成svg sprites圖。瀏覽器
1.直接將SVG的代碼添加在html中:svg
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> <path fill="#000000" d="M16 9.226l-8-6.21-8 6.21v-2.532l8-6.21 8 6.21zM14 9v6h-4v-4h-4v4h-4v-6l6-4.5z"></path> </svg>
此時SVG圖像會直接在頁面上顯示。工具
2.SVG Sprites性能
SVG屬性中, 能夠利用(symbol)來定義一個圖形模板對象, 並利用(use)將其實例化.只有symbol元素的實例(亦即,一個引用了symbol的 元素)才能呈現。動畫
<svg> <symbol id="001-home" viewBox="0 0 16 16"> <path fill="#000000" d="M16 9.226l-8-6.21-8 6.21v-2.532l8-6.21 8 6.21zM14 9v6h-4v-4h-4v4h-4v-6l6-4.5z"/> </symbol> <symbol id="002-home2" viewBox="0 0 16 16"> <path fill="#000000" d="M8 0.5l-8 8 1.5 1.5 1.5-1.5v6.5h4v-3h2v3h4v-6.5l1.5 1.5 1.5-1.5-8-8zM8 7c-0.552 0-1-0.448-1-1s0.448-1 1-1c0.552 0 1 0.448 1 1s-0.448 1-1 1z"/> </symbol> <symbol id="003-home3" viewBox="0 0 16 16"> <path fill="#000000" d="M16 9.5l-3-3v-4.5h-2v2.5l-3-3-8 8v0.5h2v5h5v-3h2v3h5v-5h2z"/> </symbol> </svg> <svg><use xlink:href="#001-home"/></svg> <svg><use xlink:href="#002-home2"/></svg>
自動化合並
1.全局,本地安裝gulp
npm install -g gulp
npm install gulp gulp-cli --save
2.本地安裝gulp-svg-symbols
npm install gulp-svg-symbols --save
3.在目錄下新建gulpfile.js,定義構建任務
var gulp = require('gulp'); var svgSymbols = require('gulp-svg-symbols'); gulp.task('svgsprites',function () { return gulp.src('./src/svg/*.svg') .pipe(svgSymbols()) .pipe(gulp.dest('./src/svgsprites')) });
4.開始構建
gulp svgsprites
git地址:
https://github.com/rainnaZR/svgsprites.git