關於svg

最近項目要使用d3,因此順便補習了一下他所須要的svg,但願對你們能有所幫助瀏覽器

什麼是SVG

  • SVG 指可伸縮矢量圖形 (Scalable Vector Graphics)網絡

  • SVG 用來定義用於網絡的基於矢量的圖形svg

  • SVG 使用 XML 格式定義圖形工具

  • SVG 圖像在放大或改變尺寸的狀況下其圖形質量不會有所損失url

  • SVG 是萬維網聯盟的標準spa

  • SVG 與諸如 DOM 和 XSL 之類的 W3C 標準是一個總體插件

  • SVG 是W3C 推薦標準code

SVG 的歷史和優點

  • 在 2003 年一月,SVG 1.1 被確立爲 W3C 標準。xml

  • 參與定義 SVG 的組織有:太陽微系統、Adobe、蘋果公司、IBM 以及柯達。圖片

  • 與其餘圖像格式相比,使用 SVG 的優點在於:

    • SVG 可被很是多的工具讀取和修改(好比記事本)

    • SVG 與 JPEG 和 GIF 圖像比起來,尺寸更小,且可壓縮性更強。

    • SVG 是可伸縮的

    • SVG 圖像可在任何的分辨率下被高質量地打印

    • SVG 可在圖像質量不降低的狀況下被放大

    • SVG 圖像中的文本是可選的,同時也是可搜索的(很適合製做地圖)

    • SVG 能夠與 Java 技術一塊兒運行

    • SVG 是開放的標準

    • SVG 文件是純粹的 XML

    • SVG 的主要競爭者是 Flash。

    • 與 Flash 相比,SVG 最大的優點是與其餘標準(好比 XSL 和 DOM)相兼容。而 Flash 則是未開源的私有技術。

SVG引入HTML的幾種方式

  • 經過 <embed> 標籤

  • <embed> 標籤是被全部主流瀏覽器支持並被使用的腳本,被Adobe SVG Viewer 所推薦,但不能適用於合法的XHTML文件中,由於<embed>標籤並不存在於HTML規範中

  • pluginspage 屬性指向下載插件的 URL

<embed src="rect.svg" width="300" height="100" 
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" />
  • 經過 <object> 標籤

  • <object> 標籤是 HTML 4 的標準標籤,被全部較新的瀏覽器支持。它的缺點是不容許使用腳本

  • codebase 屬性指向下載插件的 URL。

<object data="rect.svg" width="300" height="100" 
type="image/svg+xml"
codebase="http://www.adobe.com/svg/viewer/install/" />
  • 經過 <iframe> 標籤

  • <iframe> 標籤可工做在大部分的瀏覽器中。

<iframe src="rect.svg" width="300" height="100">
</iframe>

SVG 形狀

  • 矩形 <rect>

  • 圓形 <circle>

  • 橢圓 <ellipse>

  • 線 <line>

  • 折線 <polyline>

  • 多邊形 <polygon>

  • 路徑 <path>

SVG標籤

代碼解析

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

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

<rect width="300" height="100" 
style="fill:rgb(0,0,255);stroke-width:1;
stroke:rgb(0,0,0)"/>

</svg>
  • width 和 height 屬性可定義矩形的高度和寬度

  • style 屬性用來定義 CSS 屬性,

  • x 屬性定義矩形的左側位置(例如,x="0" 定義矩形到瀏覽器窗口左側的距離是 0px)

  • y 屬性定義矩形的頂端位置(例如,y="0" 定義矩形到瀏覽器窗口頂端的距離是 0px)

  • rx 和 ry 屬性可以使矩形產生圓角。


  • CSS 的 fill 屬性定義矩形的填充顏色(rgb 值、顏色名或者十六進制值)

  • CSS 的 stroke-width 屬性定義矩形邊框的寬度

  • CSS 的 stroke 屬性定義矩形邊框的顏色

  • CSS 的 fill-opacity 屬性定義填充顏色透明度(合法的範圍是:0 - 1)

  • CSS 的 stroke-opacity 屬性定義筆觸顏色的透明度(合法的範圍是:0 - 1)

  • CSS 的 opacity 屬性定義整個元素的透明值(合法的範圍是:0 - 1)


<circle> 圓形

  • cx 和 cy 屬性定義圓點的 x 和 y 座標。若是省略 cx 和 cy,圓的中心會被設置爲 (0, 0)

  • r 屬性定義圓的半徑。


<ellipse> 橢圓形

  • cx 屬性定義圓點的 x 座標

  • cy 屬性定義圓點的 y 座標

  • rx 屬性定義水平半徑

  • ry 屬性定義垂直半徑


<line> 線條

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

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

  • x2 屬性在 x 軸定義線條的結束

  • y2 屬性在 y 軸定義線條的結束


<polygon> 多邊形

  • 用法 points="220,100 300,210 170,250"

  • points 屬性定義多邊形每一個角的 x 和 y 座標


<polyline> 折線

  • 用來建立僅包含直線的形狀

  • points="0,0 0,20 20,20 20,40 40,40 40,60"

  • points 屬性定義多邊形每一個角的 x 和 y 座標


<path> 路徑

  • 下面的命令可用於路徑數據:

  • M = moveto

  • L = lineto

  • H = horizontal lineto 平行線

  • V = vertical lineto 垂線

  • C = curveto 三次貝爾塞爾曲線

  • S = smooth curveto

  • Q = quadratic Belzier curve 二次貝塞爾曲線

  • T = smooth quadratic Belzier curveto

  • A = elliptical Arc 圓

  • Z = closepath 閉合路徑

圖片描述

直接看圖吧 使用方法和功能已經很詳細了

SVG漸變

  • SVG 漸變必須在 <defs> 標籤中進行定義。

  • 在 SVG 中,有兩種主要的漸變類型:

    • 線性漸變 <linearGradient>

    • 放射性漸變 <radialGradient>


<linearGradient> 線性漸變

  • 線性漸變可被定義爲水平、垂直或角形的漸變:

    • 當 y1 和 y2 相等,而 x1 和 x2 不一樣時,可建立水平漸變

    • 當 x1 和 x2 相等,而 y1 和 y2 不一樣時,可建立垂直漸變

    • 當 x1 和 x2 不一樣,且 y1 和 y2 不一樣時,可建立角形漸變

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

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

<defs>
<linearGradient id="orange_red" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:rgb(255,255,0);
stop-opacity:1"/>
<stop offset="100%" style="stop-color:rgb(255,0,0);
stop-opacity:1"/>
</linearGradient>
</defs>

<ellipse cx="200" cy="190" rx="85" ry="55"
style="fill:url(#orange_red)"/>

</svg>
  • <linearGradient> 標籤的 id 屬性可爲漸變定義一個惟一的名稱
    fill:url(#orange_red) 屬性把 ellipse 元素連接到此漸變

  • <linearGradient> 標籤的 x一、x二、y一、y2 屬性可定義漸變的開始和結束位置
    漸變的顏色範圍可由兩種或多種顏色組成。每種顏色經過一個 <stop> 標籤來規定。offset 屬性用來定義漸變的開始和結束位置。



<radialGradient> 放射性漸變
  • cx、cy 和 r 屬性定義外圈

  • fx 和 fy 定義內圈 漸變的顏色範圍可由兩種或多種顏色組成。

  • 每種顏色經過一個 <stop> 標籤來規定。

  • offset 屬性用來定義漸變的開始和結束位置。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

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

<defs>
<radialGradient id="grey_blue" cx="50%" cy="50%" r="50%"
fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(200,200,200);
stop-opacity:0"/>
<stop offset="100%" style="stop-color:rgb(0,0,255);
stop-opacity:1"/>
</radialGradient>
</defs>

<ellipse cx="230" cy="200" rx="110" ry="100"
style="fill:url(#grey_blue)"/>

</svg>

clipboard.png

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

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

<defs>
<radialGradient id="grey_blue" cx="20%" cy="40%" r="50%"
fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(200,200,200);
stop-opacity:0"/>
<stop offset="100%" style="stop-color:rgb(0,0,255);
stop-opacity:1"/>
</radialGradient>
</defs>

<ellipse cx="230" cy="200" rx="110" ry="100"
style="fill:url(#grey_blue)"/>

</svg>

clipboard.png

ok 基本上全部的SVG都在這裏了但願對你們有多幫助

SVG資料:http://www.w3school.com.cn/sv...

https://developer.mozilla.org/zh-CN/docs/Web/SVG

SVG工具:http://editor.method.ac/

SVG工具使用
clipboard.png

生成的下述文件能夠根據上述內容去尋找本身想用的部分或總體去選用

clipboard.png

相關文章
相關標籤/搜索