HTML到SVG

出自跨校選修
跳至導覽 跳至搜尋

XML 包含 HTML 和 SVG

XML { HTML文件
SVG向量繪圖
  • XML,可延伸標記式語言(Extensible Markup Language)
  • HTML,超文件標記語言(HyperText Markup Language)
  • SVG,可縮放向量圖形(Scalable Vector Graphics)
  • style 屬性同時支援,HTML 與 SVG,只是樣式項目有相同,也有不同的。
  • SVG的特性
    1. XML語法,用書寫指示來畫圖。
    2. 二維向量圖形格式,不是點陣圖,無段縮放不會毛邊。
    3. 由W3C制定,是開放標準。
  • 完整的參考資料
  • 四次教學:
    1. 基本入門
    2. 進階一點點,加上使用繪圖軟體

一、SVG在教學上應用的例子:

  1. 轉動的齒輪維基共享資源上的圖:可以動
  2. 山脈的走向維基共享資源上的圖:可以在別人的基礎上添附
  3. 現代智人走出非洲的可能路線:可以在別人的基礎上添附
  4. 日本史簡表:可以結合文字畫表
  5. 鄭氏大事紀:可以圖解概念
  6. 動物細胞:可以將外國資源改成中文
  7. 丁丁在維基共享資源上的各種教學用圖

二、兩種寫法:

  • 圖檔寫法:
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='130' height='90'>

</svg>
  • HTML寫法:
<svg>

</svg>

三、本日練習:

(一)畫一個小圓圈:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='12' height='12'>
  <circle cx='6' cy='6' r='4' style='fill:#fff;stroke:blue;stroke-width:2;fill-opacity:0'/>
</svg>

(二)畫熊臉(bearFace.svg)

請參考:熊臉

(三)要領說明

  • 共同約定:
    1. 開始與結束合一。
    2. 長度如省略單位,預設單位為 px。
    3. px可以使用小數點。
    4. 以左上為座標原點。
    5. 座標描述先 x 後 y 。
    6. stlye屬性中關於線條之樣式,也可以作為繪圖:
      • stroke (線條顏色),
      • stroke-width (線條寬度),
      • stroke-opacity (線條顏色的透明度,合法的範圍是:0 - 1,0最透明,預設1),
      • stroke-linecap (線條端點形狀,預設butt端點切齊、round以端點為圓心線寬為直徑畫圓、square以端點為中心線寬為邊長畫方形),
      • stroke-linejoin (線條轉彎處樣式,預設miter尖角、round圓角、bevel斜角),
      • stroke-miterlimit (尖角內外距/線寬的最大值,不設限則尖角可以拉長至無限長,預設為 4 倍),
      • stroke-dasharray (預設none,代表實線。若為數字其值為一陣列,陣列值為線段中實線段長度與虛線段長度的交錯數字,通常是兩個數字一組,如果是奇數,則最後面自動加補第一個數字)
    7. stlye屬性中關於面之樣式:
      • fill (填充顏色),
      • fill-opacity (填充不透明,合法的範圍是:0 - 1,0最透明,預設1)。
      • fill-rule (polygon等標籤有時會將內部分割成不同的區域,填色方式,預設nonzero全部同色、evenodd相鄰區域內部填色與外部填色交互填充、inherit繼承)
    8. 選擇器 class,id 同 CSS 。
  • 常見的簡易繪圖標籤:
    1. line(直線),屬性有x1(第一點x座標)y1(第一點y座標)x2(第二點x座標)y2(第二點y座標)。
    2. polyline(多點成線),諸屬性如下:
      • points:多點,點與點用空白間開,同一點 x y 座標以逗點間開。
    3. polygon(多邊形),也可以取五點畫出一個星形。諸屬性如下:
      • points:多點,點與點用空白間開,同一點 x y 座標以逗點間開。
    4. circle(圓),諸屬性如下:
      • cx(圓心x座標),cy(圓心y座標),r(半徑)
    5. rect(矩形),諸屬性如下:
      • width(寬),height(高),省略起點則以原點為起點,x(起點x座標),y(起點y座標),rx(圓角x半徑),ry(圓角y半徑)
    6. ellipse(楕圓),諸屬性如下:
      • cx(中心x座標),cy(中心x座標),rx(x軸半長),ry(y軸半長)。

(四)畫圓角矩形和箭頭:

描圖畫畫

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height='92' width='403' xmlns='http://www.w3.org/2000/svg' version='1.1'>
<style>
text {font-family:Microsoft JhengHei Light,Microsoft JhengHei;font-size:34px;fill:white;}
</style>
<polygon style='fill:#0075B9;stroke:none;' points='◦◦◦,◦◦ ◦◦◦,◦◦ ◦◦◦,◦◦ ◦◦◦,◦◦ ◦◦◦,◦◦ ◦◦◦,◦◦ ◦◦◦,◦◦' />
<rect x='0' y='0' rx='19' ry='19' width='◦◦◦' height='◦◦' style='stroke:none;fill:#0075B9;'/>
<text x='◦◦' y='◦◦'>權本</text>
<rect x='◦◦◦' y='0' rx='19' ry='19' width='◦◦◦' height='◦◦' style='stroke:none;fill:#0075B9;'/>
<text x='◦◦◦' y='◦◦'>人本</text>
</svg>

四、更多練習:

看原始碼,然後自己寫出來:

http://jendo.org/~thisNasAdmin/polygon.svg
http://jendo.org/~thisNasAdmin/text.svg
http://jendo.org/~thisNasAdmin/3petal0.svg
http://jendo.org/~thisNasAdmin/3petal1.svg
http://jendo.org/~thisNasAdmin/3petal2.svg
http://jendo.org/~thisNasAdmin/3petal3.svg
http://jendo.org/~thisNasAdmin/3petal4.svg