摘要:它是基于,由聯(lián)盟進(jìn)行開(kāi)發(fā)的。是一種采用來(lái)描述二維圖形的語(yǔ)言這個(gè)大家都知道,那么元素是什么呢單純翻譯的話,是符號(hào)的意思,然我的理解是元素用來(lái)定義一個(gè)圖形模板對(duì)象,它可以用一個(gè)元素實(shí)例化。
大家好,這里是@IT·平頭哥聯(lián)盟,我是首席填坑官——蘇南(South·Su),今天要給大家分享的是SVG Sprites(也叫雪碧圖),所謂雪碧圖,當(dāng)然就不是我們常喝的雪碧飲料(Sprites)哦,哈哈~
當(dāng)下流程的移動(dòng)端,手機(jī)型號(hào)太多太多,今天工作項(xiàng)目中突然發(fā)現(xiàn)還有同事在使用以前大家 曾經(jīng)包括現(xiàn)在還很熟悉的CSS 圖片精靈,被我們的測(cè)試MM找來(lái)說(shuō)圖片在iphone6、iphone plus、iphone x等大屏的手機(jī)全糊了,當(dāng)時(shí)我就懵逼了,我說(shuō)怎么會(huì)呢,后面一看,果然如此啊,看了下代碼,原來(lái)是用的圖片,我說(shuō)為什么不用svg呢??然后同事說(shuō)一個(gè)一個(gè)的圖標(biāo)好麻煩,我說(shuō)可以用svg sprite啊,~~>﹏<,這個(gè)時(shí)候輪到同事一臉懵逼了……,所以想著可能是不是同樣還有很多同學(xué)也不知道SVG symbols呢,那么這就給大家分享一下:
SVG英文全稱為( Scalable Vector Graphics),意思為可縮放的矢量圖形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)聯(lián)盟進(jìn)行開(kāi)發(fā)的。嚴(yán)格來(lái)說(shuō)應(yīng)該是一種開(kāi)放標(biāo)準(zhǔn)的矢量圖形語(yǔ)言,可讓你設(shè)計(jì)激動(dòng)人心的、高分辨率的Web圖形頁(yè)面。SVG是一種采用XML來(lái)描述二維圖形的語(yǔ)言這個(gè)大家都知道,那么symbol元素是什么呢?單純翻譯的話,是“符號(hào)”的意思,然我的理解是symbol元素用來(lái)定義一個(gè)圖形模板對(duì)象,它可以用一個(gè)
.icon-sprite { width: 45px; height: 45px; background-image: url(https://github.com/meibin08/img/sprite_icon.png); background-size: 100px 350px; background-position: 0 -60px;//**重點(diǎn)在于它** background-repeat: no-repeat; }
在以前我們?yōu)榱诵阅軆?yōu)化,多圖標(biāo)合在一張圖上面,然后再使用css的 background-position,來(lái)定位,
好處是減少了頁(yè)面的加載,要命的問(wèn)題是定位遇到兼容問(wèn)題,1px.5px偏差時(shí),搞的你死去活來(lái),后來(lái)移動(dòng)端更是不清晰,被人罵了又罵。
當(dāng)后來(lái)有一天,在一個(gè)月黑風(fēng)高、暴雨傾盆、雷電交加的夜晚,我獨(dú)自一人漫步在一片小樹林里,后來(lái)我發(fā)現(xiàn)了新大陸————SVG,當(dāng)然如果僅僅svg就我也就不會(huì)拿出來(lái)吹水,因?yàn)榭隙ㄊ菚?huì)被人噴的一臉口水的,但是如果再加上它的小弟——symbols? SVG symbols、SVG symbols、SVG symbols 重要的事說(shuō)三遍不過(guò)份吧,雙重組合(屠龍、倚天)試問(wèn)天下誰(shuí)敢它爭(zhēng)鋒?特別是SVG它還下面還有很多小弟哦~,……有點(diǎn)扯遠(yuǎn)了;這項(xiàng)技術(shù)基于兩個(gè)元素的使用:
從ps或者Illustrator創(chuàng)建并導(dǎo)出SVG圖標(biāo),源碼大概是這樣的:
重點(diǎn)來(lái)了,那么我們用symbols包裝后是這個(gè)樣子的:
那么問(wèn)題來(lái)了,我們直接在頁(yè)面上引用嗎?結(jié)果是否定的,什么都不會(huì)顯示:
那么該如何擺正姿勢(shì),正確的使用它呢?高潮部分來(lái)了:
1、使用方式一 2、使用方式二,外鏈?zhǔn)揭?
為什么圖標(biāo)會(huì)顯示呢?因?yàn)橐@示圖標(biāo),我們還需要使用
大家可能還發(fā)現(xiàn)了style="display:none",你可以把它理解為是css sprite里的圖片base64轉(zhuǎn)化后的文件,而方法二里的xlink:href="./icon.svg#svg-github",可以理解為是css sprite里我們background-image 引入圖片一樣,而 #svg-github 就是background-position里的坐標(biāo),
還有顏色的改變,我們可以直接在svg內(nèi)的 path上寫行內(nèi)式 fill="#06c"、style="fill:#06c";都是可以的,在維護(hù)上,是不是比圖片更加方便呢???
當(dāng)然啦,大家都懂的,越漂亮的妹子追的人越多啦,代碼也一樣,越好用的東西往往也是不可能那么完美啦,看到這里,是不是覺(jué)得想罵娘呢?白看你說(shuō)這么多廢話,最后不能用,坑爹……
別慌,其實(shí)也沒(méi)有那么糟糕啦 ,SVG只在IE9以上支持;所以如果你需要支持IE8及以下的瀏覽器,你需要另外再寫一套降級(jí)(例如,使用png圖片方案),隨著科技的發(fā)展,IE9以上大多數(shù)人還是能接受啦,特別是手機(jī)端的用戶,再也不用擔(dān)心測(cè)試MM來(lái)找你,圖標(biāo)不清晰的問(wèn)題了啦,是不是很開(kāi)心,有沒(méi)有~~
總結(jié):
svg sprites相比css sprites,不管是在維護(hù)和開(kāi)發(fā)的過(guò)程中,還是在用戶體驗(yàn)、性能、項(xiàng)目迭代代碼維護(hù)上都比css sprites方便,更高效便捷;
svg sprites優(yōu)缺點(diǎn):
svg sprites使用xlink:href #id的方式獲取,便于維護(hù)和擴(kuò)展,因?yàn)樾D的id不會(huì)隨便改動(dòng);
方便改變圖片顏色,通過(guò)設(shè)置fill:顏色值,隨意改變小圖顏色;
IE9以上支持。
css sprites優(yōu)缺點(diǎn):
css sprites使用background-position不便于維護(hù)和擴(kuò)展、定位不精確等問(wèn)題,例如:在后期項(xiàng)目迭代中我們需要?jiǎng)h除其中一個(gè)小圖,那么排在它后面的小圖位置都要移動(dòng),需要再次修改csss樣式,或每次都要打開(kāi)PS刪除某圖標(biāo)再導(dǎo)出;
無(wú)法修改小圖顏色,要UI設(shè)計(jì)師調(diào)整后替換,過(guò)程漫長(zhǎng)效率低;
在移動(dòng)端的大屏手機(jī)圖標(biāo)會(huì)模糊,影響體驗(yàn)。
以上就是今天的分享,寫了蠻久,最近才在開(kāi)始嘗試寫博客,新手上路中,如果文章中有不對(duì)之處,煩請(qǐng)各位大神斧正。如果你覺(jué)得這篇文章對(duì)你有所幫助,請(qǐng)記得點(diǎn)贊哦~,如覺(jué)得不錯(cuò),記得關(guān)注我們的公眾號(hào)哦!!
更多文章:做完小程序項(xiàng)目、老板給我加了6k薪資~
面試踩過(guò)的坑,都在這里了~
你應(yīng)該做的前端性能優(yōu)化之總結(jié)大全!
手把手教你如何繪制一輛會(huì)跑車
如何用CSS3畫出懂你的3D魔方?
immutability因React官方出鏡之使用總結(jié)分享!
作者:蘇南 - 首席填坑官
交流群:912594095,公眾號(hào):honeyBadger8
本文原創(chuàng),著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系@IT·平頭哥聯(lián)盟獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明原鏈接及出處。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/116962.html
摘要:性能優(yōu)化是前端開(kāi)發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開(kāi)發(fā)者在網(wǎng)頁(yè)的開(kāi)發(fā)過(guò)程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加載卡頓網(wǎng)頁(yè)加載速度慢等問(wèn)題,這篇文章將會(huì)將我以往對(duì)圖片的處理做個(gè)總結(jié)。 性能優(yōu)化是前端開(kāi)發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開(kāi)發(fā)者在網(wǎng)頁(yè)的開(kāi)發(fā)過(guò)程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加...
摘要:性能優(yōu)化是前端開(kāi)發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開(kāi)發(fā)者在網(wǎng)頁(yè)的開(kāi)發(fā)過(guò)程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加載卡頓網(wǎng)頁(yè)加載速度慢等問(wèn)題,這篇文章將會(huì)將我以往對(duì)圖片的處理做個(gè)總結(jié)。 性能優(yōu)化是前端開(kāi)發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開(kāi)發(fā)者在網(wǎng)頁(yè)的開(kāi)發(fā)過(guò)程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加...
摘要:前言本文講解道前端面試的的內(nèi)容。文章原文地址前端硬核面試專題之問(wèn)。前端硬核面試專題的完整版在此前端硬核面試專題,包含數(shù)據(jù)結(jié)構(gòu)與算法。 showImg(https://segmentfault.com/img/bVbv2GE?w=900&h=400); 前言 本文講解 55 道前端面試的 CSS 的內(nèi)容。 復(fù)習(xí)前端面試的知識(shí),是為了鞏固前端的基礎(chǔ)知識(shí),最重要的還是平時(shí)的積累! 注意:文章...
摘要:是頁(yè)面渲染的一部分。一個(gè)就是一個(gè)整體,所有子元素都會(huì)在里面渲染,而不會(huì)影響外面的元素。常見(jiàn)為,根元素,,元素,或者設(shè)置了的元素列舉不同的清除浮動(dòng)的技巧,并指出它們各自適用的使用場(chǎng)景。是一個(gè)把眾多小圖片打包成一個(gè)大圖以減少請(qǐng)求。 CSS 中類 (classes) 和 ID 的區(qū)別。 id唯一,class可以多個(gè) 請(qǐng)問(wèn) resetting 和 normalizing CSS 之間的區(qū)別?你...
閱讀 2649·2021-11-11 16:55
閱讀 688·2021-09-04 16:40
閱讀 3085·2019-08-30 15:54
閱讀 2628·2019-08-30 15:54
閱讀 2416·2019-08-30 15:46
閱讀 411·2019-08-30 15:43
閱讀 3237·2019-08-30 11:11
閱讀 2990·2019-08-28 18:17