SVG筆記

一:什么是SVG垫挨?

對(duì)于SVG的定義如下:

①:SVG 指的是可伸縮矢量圖形 (Scalable Vector Graphics)。

②:SVG 用于定義用于網(wǎng)絡(luò)的基于矢量的圖形散吵。

③:SVG 使用 XML 格式定義圖形。

④:SVG 圖像在放大或改變尺寸的情況下其圖形質(zhì)量不會(huì)有損失。

⑤:SVG 是萬維網(wǎng)聯(lián)盟的標(biāo)準(zhǔn)。


二:SVG的優(yōu)勢(shì)是什么谨读?

SVG的優(yōu)勢(shì)有如下定義:

①:SVG 圖像可通過文本編輯器來創(chuàng)建和修改。

②:SVG 圖像可被搜索坛吁、索引劳殖、腳本化或壓縮贼邓。

③:SVG 是可伸縮的。

④:SVG 圖像可在任何的分辨率下被高質(zhì)量地打印闷尿。

⑤:SVG 可在圖像質(zhì)量不下降的情況下被放大。


三:SVG與Canvas的區(qū)別在于什么地方女坑?

①:SVG 是一種使用 XML 描述 2D 圖形的語(yǔ)言填具。? ? Canvas 通過 JavaScript 來繪制 2D 圖形。

②:SVG 基于 XML匆骗,這意味著 SVG可以給每一個(gè)圖形綁定事件劳景,但是Canvas是基于JavaScript,這就意味著Canvas無法給每一個(gè)圖形綁定事件碉就。(只能給canvas整個(gè)畫布綁定事件盟广,還有一種解決方案是使用第三方庫(kù))。

在 SVG 中瓮钥,每個(gè)被繪制的圖形均被視為對(duì)象筋量。如果 SVG 對(duì)象的屬性發(fā)生變化,那么瀏覽器能夠自動(dòng)重現(xiàn)圖形碉熄。

③:Canvas 是逐像素進(jìn)行渲染的桨武。在 canvas 中,一旦圖形被繪制完成锈津,它就不會(huì)繼續(xù)得到瀏覽器的關(guān)注呀酸。

如果其位置發(fā)生變化,那么整個(gè)場(chǎng)景也需要重新繪制琼梆,包括任何或許已被圖形覆蓋的對(duì)象性誉。

④:兼容性不同。 SVG的兼容性更好茎杂。

SV與Canvas之間的比較:

Canvas

-------依賴分辨率

-------不支持事件處理器

-------弱的文本渲染能力

-------能夠以 .png 或 .jpg 格式保存結(jié)果圖像

-------最適合圖像密集型的游戲错览,其中的許多對(duì)象會(huì)被頻繁重繪

SVG

-------不依賴分辨率

-------支持事件處理器

-------最適合帶有大型渲染區(qū)域的應(yīng)用程序(比如谷歌地圖)

-------復(fù)雜度高會(huì)減慢渲染速度(任何過度使用 DOM 的應(yīng)用都不快)

-------不適合游戲應(yīng)用


四:SVG在html中是怎樣使用的?

首先SVG引入到html中的方法如下:

SVG 文件可通過以下標(biāo)簽嵌入到HTML 文檔:<embed>蛉顽、<object>蝗砾、<iframe>。

使用<embed>標(biāo)簽引入 ------ <embed src="xxx.svg" type="image/svg+xml" />

①:優(yōu)勢(shì):所有主要瀏覽器都支持携冤,并允許使用腳本悼粮。

②:缺點(diǎn):不推薦在HTML4和XHTML中使用(但在HTML5允許)。

使用<object>標(biāo)簽引入 ------- <object data="xxx.svg" type="image/svg+xml"></object>

①:優(yōu)勢(shì):所有主要瀏覽器都支持曾棕,并支持HTML4扣猫,XHTML和HTML5標(biāo)準(zhǔn)。

②:缺點(diǎn):不允許使用腳本翘地。

使用<iframe>標(biāo)簽引入 ------- <iframe src="xxx.svg"></iframe>

①:優(yōu)勢(shì):所有主要瀏覽器都支持申尤,并允許使用腳本癌幕。

②:缺點(diǎn):不推薦在HTML4和XHTML中使用(但在HTML5允許)。

Tip:值得注意的地方是在使用單標(biāo)簽的時(shí)候<embed src="" />一定要有 ?/ ?閉合不然會(huì)報(bào)錯(cuò)C链I自丁!

SVG的代碼可以直接嵌入到HTML頁(yè)面中时鸵,或直接鏈接到SVG文件胶逢。

直接在HTML嵌入SVG代碼

在Firefox、Internet Explorer9饰潜、谷歌Chrome和Safari中初坠,你可以直接在HTML嵌入SVG代碼。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">

? ? ? ? ?<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red">

</svg>

鏈接到SVG文件

可以用標(biāo)簽鏈接到一個(gè)SVG文件:鏈接到SVG文件彭雾。

<a href="circle1.svg">View SVG file</a>


五:SVG標(biāo)簽的元素屬性有那幾個(gè)碟刺?

在SVG標(biāo)簽中其自身所擁有的屬性就和Canvas的一樣就只有兩個(gè)屬性:width="";和height="";


六:對(duì)SVG默認(rèn)形狀的一個(gè)認(rèn)識(shí)?

SVG和Canvas一樣都是行內(nèi)塊級(jí)元素薯酝,默認(rèn)的寬高大小都是300px ?X ?150px;


七:對(duì)SVG的圖形的認(rèn)知半沽?(SVG Shapes)

SVG有一些預(yù)定義的形狀元素,可被開發(fā)者使用和操作:

-------矩形 <rect>

-------圓形 <circle>

-------橢圓 <ellipse>

-------線 ? ? <line>

-------折線 ?<polyline>

-------多邊形 <polygon>

-------路徑 ? <path>

SVG 矩形 ---- <rect>

實(shí)例1---------- <rect>?標(biāo)簽可用來創(chuàng)建矩形蜜托,以及矩形的變種 ?如下代碼顯示:

<svg width="600" hegiht="600" id="mySvg">

? ? ? ? ?<rect ? x="X軸起始坐標(biāo)" ?y="Y軸起始坐標(biāo)" ?rx="產(chǎn)生圓角的大小" ?ry="產(chǎn)生圓角的大小" ?width="矩形的寬度" ?height="矩形的高度" ?stroke="描邊的顏色" ?stroke-width="描邊的寬度" ?fill="填充的顏色" ? />

</svg>

SVG 圓形 ---- <circle>

實(shí)例2----------<circle>標(biāo)簽可用來創(chuàng)建一個(gè)圓 ? 如下代碼顯示:

<svg ?width="600" ?height="600">

? ? ? ? <circle? cx="X軸起始坐標(biāo)"? cy="Y軸起始坐標(biāo)"? r="圓的半徑"? stroke="描邊的顏色"? stroke-width="描邊的寬度"? fill="填充的顏色"? />

</svg>

SVG 橢圓 ---- <ellipse>

實(shí)例3----------<ellipse>標(biāo)簽可用來創(chuàng)建一個(gè)橢圓?

Tip:橢圓與圓很相似抄囚。不同之處在于橢圓有不同的x和y半徑,而圓的x和y半徑是相同的橄务。 如下代碼顯示:

<svg ? ?width="600" ?height="600" ?id="mySvg">

? ? ? ? <ellipse? cx="X軸起始坐標(biāo)"? cy="Y軸起始坐標(biāo)"? rx="X軸的半徑"? ry="Y軸的半徑"? stroke="描邊的顏色"? stroke-width="描邊的寬度"? fill="填充的顏色"? />

</svg>

代碼解析:

-------CX屬性定義的橢圓中心的x坐標(biāo)

-------CY屬性定義的橢圓中心的y坐標(biāo)

-------RX屬性定義的水平半徑

-------RY屬性定義的垂直半徑

SVG 直線 ----- <line>

實(shí)例4 ---------- <line>?標(biāo)簽可用來創(chuàng)建直線? ? 下面是SVG代碼:

<svg ?width="600" ?height="600" ? id="mySvg">

? ? ? <line ?x1="0" ?y1="0" ?x2="200" ?y2="200" ?style="stroke:rgb(255,0,0);stroke-width:2" ?/>

</svg>

代碼解析:

-------x1 屬性在 x 軸定義線條的開始

-------y1 屬性在 y 軸定義線條的開始

-------x2 屬性在 x 軸定義線條的結(jié)束

-------y2 屬性在 y 軸定義線條的結(jié)束

SVG 多邊形 --------- ?<polygon>

實(shí)例5 -------?<polygon>?標(biāo)簽用來創(chuàng)建含有不少于三個(gè)邊的圖形幔托。?

多邊形是由直線組成,其形狀是"封閉"的(所有的線條 連接起來)蜂挪。如下代碼顯示:

<svg ? width="600" ? height="600" ?id="mySvg">

? ? ? ?<polygon ?points="200,10,250,190,160,210" ?style="fill:lime;stroke:purple;stroke-width:1" ?/>

</svg>

利用多邊形創(chuàng)建一個(gè)五角星

<svg ?width="600" ?height="600">

? ? ? ?<polygon points="100,10 40,180 190,60 10,60 160,180" ? style="fill:lime;stroke:purple;stroke-width:5;fill-rule:nonzero;">

</svg>

改變 fill-rule 屬性為 "evenodd"可有另外一種效果重挑。

代碼解析:

-------- points 屬性定義多邊形每個(gè)角的 x 和 y 坐標(biāo)。

SVG 曲線 ----- <polyline>

實(shí)例6 ------- <polyline> 標(biāo)簽元素是用于創(chuàng)建任何只有直線的形狀 ?如下代碼顯示:

<svg ? width="600" ?height="600">

? ? ? <polyline ? points="20,20 ?40,25 ?60,40 ?80,120 ?120.140 ?200,180" ?style="fill:none;stroke:black;stroke-width:3" />

</svg>

SVG 路徑 ------- ?<path>

實(shí)例7 -------- ?<path> ?標(biāo)簽元素用于定義一個(gè)路徑棠涮。

下面的命令可用于路徑數(shù)據(jù):

M = moveto

L = lineto

H = horizontal lineto

V = vertical lineto

C = curveto

S = smooth curveto

Q = quadratic Bézier curve

T = smooth quadratic Bézier curveto

A = elliptical Arc

Z = closepath

注意:以上所有命令均允許小寫字母谬哀。大寫表示絕對(duì)定位,小寫表示相對(duì)定位严肪。

<svg width="600" ?height="600">

? ? ? ?<path ?d="M150 0 ?L75 ?200 ?L225 ?200 ?Z " ?/>

</svg>

代碼解析:

上面的例子定義了一條路徑史煎,它開始于位置150 0,到達(dá)位置75 200驳糯,然后從那里開始到225 200篇梭,最后在150 0關(guān)閉路徑。

SVG 文本 --------- <text>

實(shí)例8? ---------? <text>? 標(biāo)簽元素用于定義文本酝枢。 如下代碼顯示:

<svg ? width="600" ?height="600">

? ? ? <text? x="70"? y="15"? fill="red" ? transform="rotate(30 20,40)">I? Love? You</text>

</svg>

以上就是對(duì)SVG的大概了解的概況恬偷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帘睦,隨后出現(xiàn)的幾起案子袍患,更是在濱河造成了極大的恐慌坦康,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诡延,死亡現(xiàn)場(chǎng)離奇詭異滞欠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肆良,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門仑撞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妖滔,你說我怎么就攤上這事⊥傲迹” “怎么了座舍?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)陨帆。 經(jīng)常有香客問我曲秉,道長(zhǎng),這世上最難降的妖魔是什么疲牵? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任承二,我火速辦了婚禮,結(jié)果婚禮上纲爸,老公的妹妹穿的比我還像新娘亥鸠。我一直安慰自己,他們只是感情好识啦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布负蚊。 她就那樣靜靜地躺著,像睡著了一般颓哮。 火紅的嫁衣襯著肌膚如雪家妆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天冕茅,我揣著相機(jī)與錄音伤极,去河邊找鬼。 笑死姨伤,一個(gè)胖子當(dāng)著我的面吹牛哨坪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姜挺,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼齿税,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了炊豪?” 一聲冷哼從身側(cè)響起凌箕,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拧篮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后牵舱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體串绩,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年芜壁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了礁凡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慧妄,死狀恐怖顷牌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塞淹,我是刑警寧澤窟蓝,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站饱普,受9級(jí)特大地震影響运挫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜套耕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一谁帕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冯袍,春花似錦匈挖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至翘瓮,卻和暖如春贮折,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背资盅。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工调榄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呵扛。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓每庆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親今穿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缤灵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一、什么是SVG? SVG指可伸縮矢量圖形(Scalable Vector Graphics)腮出; SVG用來定義用...
    清心挽風(fēng)閱讀 1,398評(píng)論 1 3
  • SVG 學(xué)習(xí)筆記 SVG是什么 SVG 指可伸縮矢量圖形 (Scalable Vector Graphics) S...
    Penn_Xu閱讀 984評(píng)論 0 1
  • 一.什么是SVG帖鸦? SVG 指的是可伸縮矢量圖形 (Scalable Vector Graphics),它用來定義...
    nightZing閱讀 17,052評(píng)論 11 62
  • 上個(gè)項(xiàng)目用到svg實(shí)現(xiàn)一個(gè)水流的動(dòng)畫,鑒于沒學(xué)習(xí)幾天胚嘲,所以懂的也不多作儿,就此分享一下。首先svg是什么馋劈,svg可縮放...
    會(huì)飛的豬l閱讀 4,135評(píng)論 0 5
  • SVG API: SVG是一種可縮放矢量圖形攻锰,一種二維圖形表示語(yǔ)言 與canvas不同的是,在瀏覽器的開發(fā)工具中能...
    Iris_mao閱讀 1,013評(píng)論 0 5