亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

你知道SVG Sprites是什么嗎,還在用css sprite就太low了

fevin / 2691人閱讀

摘要:它是基于,由聯(lián)盟進(jìn)行開發(fā)的。是一種采用來描述二維圖形的語言這個(gè)大家都知道,那么元素是什么呢單純翻譯的話,是符號(hào)的意思,然我的理解是元素用來定義一個(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找來說圖片在iphone6、iphone plus、iphone x等大屏的手機(jī)全糊了,當(dāng)時(shí)我就懵逼了,我說怎么會(huì)呢,后面一看,果然如此啊,看了下代碼,原來是用的圖片,我說為什么不用svg呢??然后同事說一個(gè)一個(gè)的圖標(biāo)好麻煩,我說可以用svg sprite啊,~~>﹏<,這個(gè)時(shí)候輪到同事一臉懵逼了……,所以想著可能是不是同樣還有很多同學(xué)也不知道SVG symbols呢,那么這就給大家分享一下:

SVG英文全稱為( Scalable Vector Graphics),意思為可縮放的矢量圖形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)聯(lián)盟進(jìn)行開發(fā)的。嚴(yán)格來說應(yīng)該是一種開放標(biāo)準(zhǔn)的矢量圖形語言,可讓你設(shè)計(jì)激動(dòng)人心的、高分辨率的Web圖形頁(yè)面。SVG是一種采用XML來描述二維圖形的語言這個(gè)大家都知道,那么symbol元素是什么呢?單純翻譯的話,是“符號(hào)”的意思,然我的理解是symbol元素用來定義一個(gè)圖形模板對(duì)象,它可以用一個(gè)元素實(shí)例化。symbol元素對(duì)圖形的作用是在同一文檔中多次使用,添加結(jié)構(gòu)和語義,SVG是無論如何放大縮小都不會(huì)糊,而圖片當(dāng)展示的尺寸大于圖片本身,就會(huì)糊了,糊了,糊了……

.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,來定位,
好處是減少了頁(yè)面的加載,要命的問題是定位遇到兼容問題,1px.5px偏差時(shí),搞的你死去活來,后來移動(dòng)端更是不清晰,被人罵了又罵。

  當(dāng)后來有一天,在一個(gè)月黑風(fēng)高、暴雨傾盆、雷電交加的夜晚,我獨(dú)自一人漫步在一片小樹林里,后來我發(fā)現(xiàn)了新大陸————SVG,當(dāng)然如果僅僅svg就我也就不會(huì)拿出來吹水,因?yàn)榭隙ㄊ菚?huì)被人噴的一臉口水的,但是如果再加上它的小弟——symbols? SVG symbols、SVG symbols、SVG symbols 重要的事說三遍不過份吧,雙重組合(屠龍、倚天)試問天下誰敢它爭(zhēng)鋒?特別是SVG它還下面還有很多小弟哦~,……有點(diǎn)扯遠(yuǎn)了;這項(xiàng)技術(shù)基于兩個(gè)元素的使用:

從ps或者Illustrator創(chuàng)建并導(dǎo)出SVG圖標(biāo),源碼大概是這樣的:

 
    

重點(diǎn)來了,那么我們用symbols包裝后是這個(gè)樣子的:


  
    github
    
 

那么問題來了,我們直接在頁(yè)面上引用嗎?結(jié)果是否定的,什么都不會(huì)顯示:


        
          
            github
            
         
        
    

那么該如何擺正姿勢(shì),正確的使用它呢?高潮部分來了:


        
          
            github
            
         
        
        1、使用方式一
        
          
        
        2、使用方式二,外鏈?zhǔn)揭?        
          
        
        
    

為什么圖標(biāo)會(huì)顯示呢?因?yàn)橐@示圖標(biāo),我們還需要使用元素,
通俗的講就是你定義了一組圖形對(duì)象(使用元素)之后,可以使用元素來對(duì)它進(jìn)行無限次實(shí)例化展示。你使用xlink:href屬性來指定你想要展示哪一組圖標(biāo)(相當(dāng)于css圖片精靈中的background-position),這里,我們要展示的是id為#svg-github的,

大家可能還發(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)然啦,大家都懂的,越漂亮的妹子追的人越多啦,代碼也一樣,越好用的東西往往也是不可能那么完美啦,看到這里,是不是覺得想罵娘呢?白看你說這么多廢話,最后不能用,坑爹……
別慌,其實(shí)也沒有那么糟糕啦 ,SVG只在IE9以上支持;所以如果你需要支持IE8及以下的瀏覽器,你需要另外再寫一套降級(jí)(例如,使用png圖片方案),隨著科技的發(fā)展,IE9以上大多數(shù)人還是能接受啦,特別是手機(jī)端的用戶,再也不用擔(dān)心測(cè)試MM來找你,圖標(biāo)不清晰的問題了啦,是不是很開心,有沒有~~

總結(jié):
svg sprites相比css sprites,不管是在維護(hù)和開發(fā)的過程中,還是在用戶體驗(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);

方便改變圖片顏色,通過設(shè)置fill:顏色值,隨意改變小圖顏色;

IE9以上支持。

css sprites優(yōu)缺點(diǎn):

css sprites使用background-position不便于維護(hù)和擴(kuò)展、定位不精確等問題,例如:在后期項(xiàng)目迭代中我們需要?jiǎng)h除其中一個(gè)小圖,那么排在它后面的小圖位置都要移動(dòng),需要再次修改csss樣式,或每次都要打開PS刪除某圖標(biāo)再導(dǎo)出;

無法修改小圖顏色,要UI設(shè)計(jì)師調(diào)整后替換,過程漫長(zhǎng)效率低;

在移動(dòng)端的大屏手機(jī)圖標(biāo)會(huì)模糊,影響體驗(yàn)。

  以上就是今天的分享,寫了蠻久,最近才在開始嘗試寫博客,新手上路中,如果文章中有不對(duì)之處,煩請(qǐng)各位大神斧正。如果你覺得這篇文章對(duì)你有所幫助,請(qǐng)記得點(diǎn)贊哦~,如覺得不錯(cuò),記得關(guān)注我們的公眾號(hào)哦??!

更多文章:

做完小程序項(xiàng)目、老板給我加了6k薪資~
面試踩過的坑,都在這里了~
你應(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://www.ezyhdfw.cn/yun/116962.html

相關(guān)文章

  • 淺探前端圖片優(yōu)化

    摘要:性能優(yōu)化是前端開發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開發(fā)者在網(wǎng)頁(yè)的開發(fā)過程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加載卡頓網(wǎng)頁(yè)加載速度慢等問題,這篇文章將會(huì)將我以往對(duì)圖片的處理做個(gè)總結(jié)。 性能優(yōu)化是前端開發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開發(fā)者在網(wǎng)頁(yè)的開發(fā)過程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加...

    CocoaChina 評(píng)論0 收藏0
  • 淺探前端圖片優(yōu)化

    摘要:性能優(yōu)化是前端開發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開發(fā)者在網(wǎng)頁(yè)的開發(fā)過程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加載卡頓網(wǎng)頁(yè)加載速度慢等問題,這篇文章將會(huì)將我以往對(duì)圖片的處理做個(gè)總結(jié)。 性能優(yōu)化是前端開發(fā)必不可少的一環(huán),而圖片優(yōu)化又是性能優(yōu)化中必不可少的一環(huán),但不知道有多少開發(fā)者在網(wǎng)頁(yè)的開發(fā)過程中會(huì)注意圖片的使用,圖片使用不當(dāng)可能會(huì)導(dǎo)致網(wǎng)頁(yè)加...

    X1nFLY 評(píng)論0 收藏0
  • 前端硬核面試專題之 CSS 55 問

    摘要:前言本文講解道前端面試的的內(nèi)容。文章原文地址前端硬核面試專題之問。前端硬核面試專題的完整版在此前端硬核面試專題,包含數(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í)的積累! 注意:文章...

    崔曉明 評(píng)論0 收藏0
  • 前端面試筆記 - css

    摘要:是頁(yè)面渲染的一部分。一個(gè)就是一個(gè)整體,所有子元素都會(huì)在里面渲染,而不會(huì)影響外面的元素。常見為,根元素,,元素,或者設(shè)置了的元素列舉不同的清除浮動(dòng)的技巧,并指出它們各自適用的使用場(chǎng)景。是一個(gè)把眾多小圖片打包成一個(gè)大圖以減少請(qǐng)求。 CSS 中類 (classes) 和 ID 的區(qū)別。 id唯一,class可以多個(gè) 請(qǐng)問 resetting 和 normalizing CSS 之間的區(qū)別?你...

    loonggg 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<