摘要:在中使用很簡單,但是也有一些需要知道的事情。兼容的方法在里面使用如果想要通過控制,但是又想避免內聯的弊端,可以在里面使用。記得去掉換行它可以在上述的所有場景里面使用,除了內聯。
原文地址: https://css-tricks.com/using-...原文作者: Chris Coyier
翻譯作者: https://github.com/chenmf6
翻譯出處:https://github.com/lightningm...
SVG是一種向量圖的圖片格式,即可伸縮向量圖(Scalable Vector Graphics),可以在Adobe Illustrator里面生成。在Web中使用SVG很簡單,但是也有一些需要知道的事情。
為什么用SVG壓縮后文件體積小
可以無損伸縮到任意尺寸(除非尺寸特別小)
在retina屏幕上可以完美顯示
設計可控,比如交互和濾鏡
怎么生成SVG可以在Adobe Illustrator里設計并且得到SVG。下面是一個站在橢圓上的奇異鳥:
留意到畫板剛好貼著設計主體的邊緣,畫布的大小在SVG里面的重要性和在PNG和JPG里面是一樣的。
然后可以直接在Adobe Illustrator里面保存成SVG文件。
保存的時候,可以在duihua對話框里面選擇SVG選項。完整的參考可以看SVG 介紹。這里選SVG 1.1就可以了。
當點擊"OK"或者"SVG Code..."的時候,就會打開文本編輯器,顯示SVG的編碼。
然后就可以用特殊的SVG CSS來控制這些元素了。SVG元素由著特殊的CSS屬性,比如它沒有background-color,而是用fill,但是也可以使用一些其他的普通屬性,比如:hover
CSS .kiwi { fill: #94d31b; } .kiwi:hover { fill: #ace63c; }
更厲害的是,SVG可以使用濾鏡(filter),比如模糊濾鏡。比如在SVG代碼里面可以加上一個濾鏡:
SVG
然后可以在CSS里面使用這個濾鏡
CSS .ground:hover { filter: url(#pictureFilter); }
下面是一個完整的例子:
前往codepen查看
更多閱讀:
SVG濾鏡的更多應用
SVG CSS屬性大全(針對Opera)
SVG濾鏡效果演示(由Microsoft提供)
瀏覽器支持內聯SVG的瀏覽器支持看這里,基本和前面的一樣。兼容的方法:
HTML
CSS .fallback { display: none; /* Make sure it"s the same size as the SVG takes up */ } .no-svg .fallback { background-image: url(logo.png); }在里面使用SVG
如果想要通過CSS控制SVG,但是又想避免內聯SVG的弊端,可以在里面使用SVG。
HTML
同樣可以使用Modernizr來兼容:
CSS .no-svg .logo { width: 200px; height: 164px; background-image: url(kiwi.png); }
這種情況下,如果想要用CSS控制SVG,就不能用外部的樣式或者文檔里面的了,要用SVG文件內部的:
SVG在 SVG里使用外部樣式
可以在SVG文件開頭的標簽前面引入:
HTML
如果把這個放在HTML里面,頁面會崩潰沒法渲染,如果把這個放在或者background-image的SVG里面,頁面不會崩潰,但是也不起作用。
在Data URL里面使用SVG還可以把SVG轉換成Data URL,轉換之后可能不止原來的文件大小,但是它很方便,因為不需要額外產生網絡請求。
Mobilefish.com上面有一個base64在線轉換器,可以轉成base64編碼,但是這種方式不太推薦。記得去掉換行:
它可以在上述的所有場景里面使用,除了內聯SVG。
個人比較推薦這個在線轉換器,因為轉換之后可讀性比較強。
用在里面
HTML
CSS里面
CSS .logo { background: url("data:image/svg+xml;base64,[data]"); }
里面
HTML
如果,SVG在base64編碼之前有嵌套的,那么它依然可以在里面起作用。
Data URI格式上面的例子都是base64編碼的,但是也不一定要轉換成base64編碼,實際上對于SVG最好不要轉成base64編碼。因為SVG的原始格式文本重復性比較高,gzip壓縮效果更好。
HTML data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL... data:image/svg+xml;charset=UTF-8, data:image/svg+xml;charset=UTF-8,%3Csvg xmlns="http://..." data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//...自動化工具
grunticon
從CSS的角度來看比較易用,為每個icon生成一個class,不用CSS sprites。grunticon輸入一個SVG/PNG文件的目錄,然后輸出對應的3種格式的CSS:SVG data url,png data url和一個引用普通的png圖片的兼容性CSS文件。
iconizr
一個PHP命令行工具,把SVG圖片轉換成CSS icon,支持圖片優化和SASS輸出。相關參考
David Bushell: 一個前端SVG Hacking的更好方法
David Bushell: 使用不依賴于分辨率的SVG
MDN on SVG
SVG相關的瀏覽器支持
Peter Gasston: 使用Fragment Identifiers更好地實現SVG Sprites
simuari: SVG棧
SVG.js - "輕量的第三方庫,可以操作SVG,還可以實現動畫"
Emmet:一種直接從文本編輯器里面生成SVG data URI的方式
Compass Inline Data Helpers.
Adobe: 給SVG添加樣式
Andrew J. Baker: 馴服SVG
除了Illustrator的其他編輯工具: Inkscape, Sketch
Krister Kari: 在移動端瀏覽器中使用SVG圖片
Kyle Foster: 更優的SVG工作流
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/114836.html
摘要:在中使用很簡單,但是也有一些需要知道的事情。兼容的方法在里面使用如果想要通過控制,但是又想避免內聯的弊端,可以在里面使用。記得去掉換行它可以在上述的所有場景里面使用,除了內聯。 原文地址: https://css-tricks.com/using-...原文作者: Chris Coyier 翻譯作者: https://github.com/chenmf6 翻譯出處:https://gi...
摘要:它是基于,由聯盟進行開發的。是一種采用來描述二維圖形的語言這個大家都知道,那么元素是什么呢單純翻譯的話,是符號的意思,然我的理解是元素用來定義一個圖形模板對象,它可以用一個元素實例化。 showImg(https://segmentfault.com/img/bVbhAl9?w=1278&h=722); 大家好,這里是@IT·平頭哥聯盟,我是首席填坑官——蘇南(South·Su),...
閱讀 3328·2023-04-26 00:07
閱讀 3922·2021-11-23 10:08
閱讀 2939·2021-11-22 09:34
閱讀 858·2021-09-22 15:27
閱讀 1749·2019-08-30 15:54
閱讀 3743·2019-08-30 14:07
閱讀 913·2019-08-30 11:12
閱讀 678·2019-08-29 18:44