国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

linkFly / 774人閱讀

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

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

簡(jiǎn)介

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

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

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

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

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

前言

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

如何使用SVG

有許多方法可以把SVG插入到你的項(xiàng)目:內(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的使用方法,但在某些特定情況下,其他方法也許會(huì)更好。例如,如果你不需要圖形本身的編輯功能或訪問其各個(gè)部分,則用--> 第一節(jié):篇章組織

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

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

組織和語義

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

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

svg 元素

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

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

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

g 元素

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

use 元素

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

defs 元素

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


    
        
            
            
        
    
    

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

symbol 元素

元素類似于,因?yàn)樗峁┝艘环N組元素的方法,但是,如果沒有使用元素,中的元素沒有可視化輸出(如)。 它也不同于元素,建立自己的坐標(biāo)系,與渲染的視口分開。 SVG視口和viewBox共同建立被映射的圖形的坐標(biāo)系統(tǒng),將進(jìn)一步介紹不同的部分。

堆疊順序

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


    
        
        
        
    
    
        
        
        
    

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


    
        
        
        
    
    
        
        
        
    

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

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

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

基本形狀

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

矩形

元素定義一個(gè)矩形。


    

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

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

圓形

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


    

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

橢圓

元素基于中心點(diǎn)和兩個(gè)半徑定義橢圓。


    

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

直線

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

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

折線

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


    

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

多邊形

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


    

多邊形形狀的點(diǎn)通過八組的x,y值來定義。

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

路徑元素

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

path data

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

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


    

moveto

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

closepath

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

lineto

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

L, l

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

H, h

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

V, v

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

曲線命令

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

Cubic Bézier

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

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


    

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

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

Quadratic Bézier

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

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


    

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

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

大寫的Q信號(hào)表示絕對(duì)定位,而小寫的q是相對(duì)定位。T和t也是一樣。

Elliptical Arc

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

下面是一個(gè)基本橢圓弧的代碼:


    

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

矢量軟件嵌入

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

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

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


    
        
        
    
    
        
        
    

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

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

致謝

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

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的口袋指南(下)中展示,敬請(qǐng)期待。

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

>> 滬江Web前端上海團(tuán)隊(duì)招聘【W(wǎng)eb前端架構(gòu)師】,有意者簡(jiǎn)歷至:zhouyao@hujiang.com <<

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/51256.html

相關(guān)文章

  • 翻譯 | 編寫SVG口袋指南

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

    Brenner 評(píng)論0 收藏0
  • 小技巧 - 收藏集 - 掘金

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

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

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

    番茄西紅柿 評(píng)論0 收藏0
  • JavaScript 閉包指南

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

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<