成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

翻譯 | 編寫SVG的口袋指南(上)

Brenner / 605人閱讀

摘要:元素元素歸屬于容器和結(jié)構(gòu)元素,在文檔內(nèi)允許嵌套使用獨立的片段。如果包含葡萄的組被移動到文檔的末尾,它將出現(xiàn)在西瓜的前面。例如,將葡萄的莖的路徑移動到組的末尾將導(dǎo)致莖在頂部。

作者:DDU(滬江前端開發(fā)工程師)
本文是原文翻譯,轉(zhuǎn)載請注明作者及出處。

簡介

Scalable Vector Graphics (SVG)是在XML中描述二維圖形的語言。這些圖形由路徑,圖片和(或)文本組成,并能夠在不失真的情況下任意變換尺寸。
本書主要介紹了內(nèi)聯(lián)SVG,它是指在HTML中編寫的嵌入式代碼,以便在瀏覽器中生成這些圖形。

以這種方式使用SVG有許多優(yōu)點,包括為了交互目的訪問所有圖形的各個部分,支持訪問 SVG 文檔構(gòu)成的 DOM 節(jié)點樹,查詢、修改 DOM 節(jié)點的屬性,提升用戶可訪問性。

先介紹基本組織和簡單形狀,再繼續(xù)描述SVG坐標(biāo)系或“Canvas”,然后用它繪制圖形的內(nèi)部和/或邊框,變換,以及使用和操作圖形文本。通過漸變和模式等更高級的功能來總結(jié)。

這個指南快速且詳細的介紹內(nèi)聯(lián)式SVG以及所有涵蓋的可使用的功能,有助于你學(xué)習(xí)SVG。 它面向設(shè)計師和開發(fā)人員,希望以最可行的方式將SVG添加到他們的工作流程中。

從小筆畫細節(jié)到開始使用手工制作的模式,本指南旨在成為一個圍繞“go-to”編寫SVG的參考。

前言

本“口袋指南”只針對已經(jīng)有一些HTML和CSS基礎(chǔ)的人,在你喜愛的瀏覽器中繪制SVG之前最好知道一些額外的知識, 例如:在SVG中正確渲染的信息,如何讓你的圖形更容易訪問,以及何時何處使用矢量圖形軟件。

如何使用SVG

有許多方法可以把SVG插入到你的項目:內(nèi)聯(lián)、img標(biāo)簽、背景圖、或者作為Data URI’s。我們主要介紹內(nèi)聯(lián)SVG的使用方法,包括如何在結(jié)構(gòu)清晰的HTML文檔中編寫SVG代碼。

盡管我們只是介紹了內(nèi)聯(lián)SVG的使用方法,但在某些特定情況下,其他方法也許會更好。例如,如果你不需要圖形本身的編輯功能或訪問其各個部分,則用--> 第一節(jié):篇章組織

SVG詳細信息位于元素中。此元素中有幾個屬性,可以自定義你的圖形“canvas”。雖然這些屬性對于呈現(xiàn)圖像不是完全必要的,但是在跨瀏覽器執(zhí)行時忽略它們可能使更復(fù)雜的圖形易受攻擊,并且使得它們?nèi)菀撞话搭A(yù)期進行呈現(xiàn)。

如上所述,內(nèi)聯(lián)圖形可以“手動”編寫,或者通過訪問由矢量圖形軟件生成的XML代碼來嵌入。因為這些圖形元素的順序決定了它們的堆疊順序,所以無論哪種方式,正確的組織和結(jié)構(gòu)對于編寫高效的SVG代碼至關(guān)重要的。

組織和語義

SVG文檔片段由元素中包含的任意數(shù)量的SVG元素組成。本文檔中的組織是至關(guān)重要的。文檔中的內(nèi)容可以快速擴展,正確的組織提高了可訪問性和效率,使作者和用戶都受益。

本節(jié)將介紹編寫SVG的關(guān)鍵 - 元素 - 并查看幫助初始文檔設(shè)置的一些常見屬性。

svg 元素

元素歸屬于容器和結(jié)構(gòu)元素,在文檔內(nèi)允許嵌套使用獨立的SVG片段。每個獨立的片段都有自己的坐標(biāo)系。

此元素中使用的屬性(如width,height,preserveAspectRatio和viewBox)定義正在寫入圖形的畫布。

當(dāng)從某些矢量軟件獲得SVG代碼時,在元素中有很多附加信息,例如SVG版本號(指示正在使用的SVG語言版本)和DOCTYPE。正如我已經(jīng)提到的,這些信息不會包括在本指南的示例中,缺少它們不會阻止你的圖形在屏幕上呈現(xiàn)。

g 元素

g元素是組合相關(guān)圖形的容器元素。將此元素與描述和標(biāo)題元素結(jié)合使用提供圖形的相關(guān)信息,并將相關(guān)圖形組件分在同一組在一起提高訪問性。 此外,通過相關(guān)元素分在同一組,可以將它們看作一個整體與各個獨立的部分。移動這些元素尤其方便,例如,可以移動整個組。 不包含在g中的任何元素則認(rèn)為有它們自己的組。

use 元素

元素允許您在整個文檔中重復(fù)使用元素。此元素中可以包含其他屬性,例如x,y,width和height,這些屬性定義圖形在坐標(biāo)系中的詳細映射位置。 在這里使用xlink:href屬性可以調(diào)用要重用的元素。例如,如果存在需要重新使用的蘋果的圖像的“apple”的id的,則該圖像可以由。 這個元素作為一個重要的時間保護程序幫助壓縮代碼。

defs 元素

雖然允許重用已經(jīng)渲染的圖形,但元素中的圖形不會渲染到畫布上,而是能夠被引用,然后通過使用xlink:href來渲染。 圖形在中定義,然后可以通過引用該圖形的id在整個文檔中使用。 例如,下面的代碼繪制一個非常簡單的矩形漸變:


    
        
            
            
        
    
    

除非引用其唯一的id來調(diào)用,不然內(nèi)容沒有直觀的輸出,在這個實例中通過矩形的fill屬性完成內(nèi)容渲染。

symbol 元素

元素類似于,因為它提供了一種組元素的方法,但是,如果沒有使用元素,中的元素沒有可視化輸出(如)。 它也不同于元素,建立自己的坐標(biāo)系,與渲染的視口分開。 SVG視口和viewBox共同建立被映射的圖形的坐標(biāo)系統(tǒng),將進一步介紹不同的部分。

堆疊順序

HTML中的其他元素的堆疊順序可以CSS中的z-index操縱,但SVG不能。 SVG元素的堆疊順序完全取決于它們在文檔片段中的位置。 下面的葡萄和西瓜在同一個元素中。西瓜出現(xiàn)在葡萄前面,因為文檔中包含組成西瓜的路徑的組被列在葡萄之后。


    
        
        
        
    
    
        
        
        
    

如果包含葡萄的組被移動到文檔的末尾,它將出現(xiàn)在西瓜的前面。


    
        
        
        
    
    
        
        
        
    

這種定型的堆疊順序的方法也適用于組內(nèi)的每一個元素。例如,將葡萄的莖的路徑移動到組的末尾將導(dǎo)致莖在頂部。

第二節(jié):基本形狀和路徑

當(dāng)你需要在HTML中使用更復(fù)雜的內(nèi)聯(lián)SVG圖形時就沒有辦法再手工編寫了。那些更復(fù)雜的圖形可以使用矢量軟件創(chuàng)建,但現(xiàn)在我們來學(xué)習(xí)下手動編碼的基礎(chǔ)。

基本形狀

SVG包含以下基本形狀元素集:矩形,圓形,橢圓形,直線,折線和多邊形。每個元素在渲染之前需要一些屬性,如坐標(biāo)和大小等詳細信息。

矩形

元素定義一個矩形。


    

width和height屬性確定矩形的大小,而fill則設(shè)置形狀的內(nèi)部顏色。數(shù)值默認(rèn)為pixels,當(dāng)未指定時,fill將默認(rèn)為黑色。 其他屬性還有x和y坐標(biāo)。這些值將圖形沿元素對應(yīng)的軸移動相應(yīng)的距離。

也可以通過指定rx和ry屬性中的值來創(chuàng)建圓角。例如,rx =“5”ry =“10”將產(chǎn)生具有5px半徑的角的水平邊,以及具有10px半徑的角的垂直邊。

圓形

基于中心點和外半徑設(shè)置元素。


    

cx和cy坐標(biāo)建立圓的中心相對于由設(shè)置的工作空間尺寸的位置。
r屬性設(shè)置外半徑的大小。

橢圓

元素基于中心點和兩個半徑定義橢圓。


    

當(dāng)cx和cy值基于到SVG坐標(biāo)空間中的像素距離建立中心點時,rx和ry值定義形狀的邊的半徑。

直線

line元素定義具有開始點和結(jié)束點的直線。

x1和y1值確定線的開始坐標(biāo),而x2和y2值確定線的結(jié)束坐標(biāo)。

折線

元素定義了一組相連的直線段,通常構(gòu)成開放形狀(不連接的開始點和結(jié)束點)。


    

在整個形狀中points的值在x和y軸上建立形狀的位置,并且在整個值列表中被分組為x,y。不能使用奇數(shù)點。

多邊形

元素定義由連接的線組成的閉合形狀。


    

多邊形形狀的點通過八組的x,y值來定義。

該元素還可以根據(jù)點的數(shù)量產(chǎn)生其他閉合形狀。

路徑元素

SVG路徑表示形狀的輪廓。此形狀可以填充,描邊,并用于導(dǎo)航文本和/或用作剪切路徑。 當(dāng)涉及許多曲線時,這個路徑會變得非常復(fù)雜。然而,理解工作原理和涉及的語法將有助于管理這些特定路徑。

path data

路徑數(shù)據(jù)包含在元素內(nèi)的d屬性中,定義了形狀的輪廓:”/>。 d屬性中的這些數(shù)據(jù)說明了路徑的moveto,line,curve,arc和closepath指令。

下面的詳細信息定義了青檸圖形的路徑細節(jié):


    

moveto

moveto命令(M或m)建立一個新的點,就像提起一支鋼筆,并在紙上一個新位置繪制。包括路徑數(shù)據(jù)的代碼行必須以moveto命令開始,如上面的例子所示。 moveto命令跟在初始化路徑之后,代表新子路徑的開始和復(fù)合路徑的創(chuàng)建。這里的大寫字母M表示絕對坐標(biāo),小寫字母m表示相對坐標(biāo)。

closepath

closepath(Z或z)表示當(dāng)前子路徑的結(jié)束,并從該點到路徑的初始點繪制直線。 如果closepath之后緊跟著一個moveto,這些moveto坐標(biāo)表示下一個子路徑的開始。如果這個相同的closepath之后是moveto之外的任何東西,則下一個子路徑從當(dāng)前子路徑的點開始。 這里大寫或小寫z沒有區(qū)別。

lineto

lineto命令從當(dāng)前點到新點繪制直線。

L, l

L和l命令從當(dāng)前點繪制一條線到下一個提供的點坐標(biāo)。這個新點然后變成當(dāng)前點,以此類推。 大寫L表示絕對定位,而小寫l是相對定位。

H, h

H和h命令從當(dāng)前點繪制水平線。
大寫H表示絕對定位,而小寫h是相對定位。

V, v

V和v命令從當(dāng)前點繪制垂直線。
大寫V表示絕對定位,而小寫v是相對定位。

曲線命令

有三組命令繪制曲線路徑:CubicBézier(C,c,S,s),二次貝塞爾(Q,q,T,t)和橢圓弧(A,a)。 以下曲線部分將介紹每條曲線命令的基本概念,和映射的詳細信息,然后提供一個圖表供進一步了解。

Cubic Bézier

C和c CubicBézier命令從當(dāng)前點繪制曲線,使用(x1,y1)參數(shù)作為曲線開始處的控制點,(x2,y2)作為結(jié)束處的控制點,定義形狀細節(jié)曲線。

S和s命令還繪制立方貝塞爾曲線,但在這種情況下,存在第一控制點是第二控制點的反射的假設(shè)。 下面的代碼繪制了一個基本的CubicBézier曲線:


    

該曲線的第一和最后一組值將影響其開始和結(jié)束位置,兩個中心值將影響曲線本身在開始和結(jié)束時的形狀和定位。 S和s命令也繪制立方貝塞爾曲線,但在這種情況下,假設(shè)第一個控制點是前一個C命令的最后一個控制點的反映。則會作為相對于S命令的開始點。

大寫字母C表示絕對定位,而小寫字母c是相對定位。S和s也是一樣。

Quadratic Bézier

二次貝塞爾曲線(Q,q,T,t)類似于立方貝塞爾曲線,除了它只有一個控制點。

以下代碼繪制了一個基本的二次貝塞爾曲線:


    

操作第一個和最后一組值M20,50和100,50會影響曲線起點和終點的位置。中心值集Q40,5定義曲線的控制點,確定其形狀。

Q和q使用(x1,y1)作為控件從初始點到終點繪制曲線。 T和t通過假設(shè)控制點是相對于新的T或t命令的開始點的先前列出的命令的控制的反映,從初始點到終點繪制曲線。

大寫的Q信號表示絕對定位,而小寫的q是相對定位。T和t也是一樣。

Elliptical Arc

橢圓?。ˋ,a)定義橢圓的線段。這些段通過A或命令創(chuàng)建,通過指定起點,終點,x和y半徑,旋轉(zhuǎn)和方向創(chuàng)建弧。

下面是一個基本橢圓弧的代碼:


    

該路徑中的第一和最后一組值,M65,10和50,25表示初始和最終坐標(biāo),而第二組值定義兩個半徑。 1,0(大弧標(biāo)志和順時針標(biāo)志)的值確定如何繪制圓弧,因為這里有四個不同的選項。 下圖顯示了四個弧選項以及大弧標(biāo)志值和順時針標(biāo)志值對弧段的最終渲染的影響。

矢量軟件嵌入

矢量圖形軟件可以制作更復(fù)雜的形狀和路徑,同時可以導(dǎo)出SVG代碼在其他地方使用和操作。

一旦圖形完成,生成的XML代碼可以被復(fù)制并嵌入到HTML中,圖形越復(fù)雜代碼越長。分解SVG的每個部分并且運用適當(dāng)?shù)慕M織元素可以極大地幫助引導(dǎo)和理解這些復(fù)雜和冗長的代碼。

這里是一些櫻桃的SVG代碼圖像,添加了引導(dǎo)類:


    
        
        
    
    
        
        
    

svg元素中的屬性定義工作區(qū),或圖形的“畫布”。葉和莖在一個g(組)內(nèi),而櫻桃在另一個。數(shù)字字符串定義圖形將采用的路徑,fill和stroke屬性設(shè)置背景和邊框的顏色。

將這個代碼復(fù)制下來,它會通過一個SVG優(yōu)化器在被放置在HTML之前,以助于消除不必要的代碼和間距,進而大大縮小文件。 關(guān)于這個方面Peter Collingridge的SVG Optimiser和SVGO也是非常有用的工具。

致謝

我用這一整節(jié)的內(nèi)容來表達對你們特別的感謝:

CSS-Tricks(http://css-tricks.com/)
Lincoln Loop(http://lincolnloop.com/)
Designmodo(https://designmodo.com/)
Tahoe Partners(http://www.tahoepartners.com/)
Una Kravets(https://twitter.com/Una)

原文地址:http://svgpocketguide.com/book/

剩余部分將在編寫SVG的口袋指南(下)中展示,敬請期待。

iKcamp原創(chuàng)新書《移動Web前端高效開發(fā)實戰(zhàn)》已在亞馬遜、京東、當(dāng)當(dāng)開售。

>> 滬江Web前端上海團隊招聘【W(wǎng)eb前端架構(gòu)師】,有意者簡歷至:[email protected] <<

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/112583.html

相關(guān)文章

  • 翻譯 | 編寫SVG口袋指南

    摘要:元素元素歸屬于容器和結(jié)構(gòu)元素,在文檔內(nèi)允許嵌套使用獨立的片段。如果包含葡萄的組被移動到文檔的末尾,它將出現(xiàn)在西瓜的前面。例如,將葡萄的莖的路徑移動到組的末尾將導(dǎo)致莖在頂部。 作者:DDU(滬江前端開發(fā)工程師)本文是原文翻譯,轉(zhuǎn)載請注明作者及出處。 簡介 Scalable Vector Graphics (SVG)是在XML中描述二維圖形的語言。這些圖形由路徑,圖片和(或)文本組成,并能...

    linkFly 評論0 收藏0
  • 小技巧 - 收藏集 - 掘金

    摘要:然而學(xué)習(xí)布局,你只要學(xué)習(xí)幾個手機端頁面自適應(yīng)解決方案布局進階版附源碼示例前端掘金一年前筆者寫了一篇手機端頁面自適應(yīng)解決方案布局,意外受到很多朋友的關(guān)注和喜歡。 十分鐘學(xué)會 Fiddler - 后端 - 掘金一.Fiddler介紹 Fiddler是一個http抓包改包工具,fiddle英文中有欺騙、偽造之意,與wireshark相比它更輕量級,上手簡單,因為只能抓http和https數(shù)據(jù)...

    A Loity 評論0 收藏0
  • CSS變量(自定義屬性)實踐指南

    摘要:和這樣的預(yù)處理器,讓我們的代碼保持良好的結(jié)構(gòu)和可維護性。這是否意味著變量已經(jīng)無關(guān)緊要了呢那可未必,主要是因為,變量與預(yù)處理器中的變量其實是不同的東西。而你是無法對預(yù)處理器中的變量做上面這些操作的。 本文翻譯自:https://www.sitepoint.com/practical-guide-css-variables-custom-properties/ 轉(zhuǎn)載請注明出處:葡萄城官網(wǎng),葡萄城...

    番茄西紅柿 評論0 收藏0
  • JavaScript 閉包指南

    摘要:要使用閉包,需要在另一個函數(shù)中創(chuàng)建一個函數(shù),這種函數(shù)被稱為嵌套函數(shù)。只有名為閉包的功能才能對此進行訪問。結(jié)論閉包是外部函數(shù)中的變量集合,它提供對內(nèi)部函數(shù)作用域的訪問以保護全局命名空間。 翻譯:瘋狂的技術(shù)宅https://medium.freecodecamp.o... 本文首發(fā)微信公眾號:前端先鋒歡迎關(guān)注,每天都給你推送新鮮的前端技術(shù)文章 閉包是函數(shù)創(chuàng)建時作用域內(nèi)所有變量的集合。...

    MobService 評論0 收藏0

發(fā)表評論

0條評論

Brenner

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<