SVG-標籤

標籤

直線<line>

<line> 標籤用來建立線條。html

屬性 含義
x1 屬性在 x 軸定義線條的開始
y1 屬性在 y 軸定義線條的開始
x2 屬性在 x 軸定義線條的結束
y2 屬性在 y 軸定義線條的結束

折線<polyline>

<polyline> 標籤用來建立僅包含直線的形狀。瀏覽器

屬性 含義
points 指定了每一個端點的座標,橫座標與縱座標之間與逗號分隔,點與點之間用空格分隔
<svg width="100" height="50">
  <polyline stroke="red" fill="black" stroke-width="2" points="0,0 10,10 20,10 100,50"/>
</svg>

<circle>

屬性 含義
cx 圓心x軸座標
cy 圓心y軸座標
r 半徑
<svg width="100" height="50">
  <circle cx="50"  cy="25" r="25" />
</svg>

矩形<rect>

標籤可用來建立矩形,以及矩形的變種。 安全

屬性 含義
x 左上角x軸座標,默認值爲0
y 左上角y軸座標,默認值爲0
width
height
rx 圓角弧度
ry 圓角弧度
<svg width="100" height="50">
  <rect width="100" height="50" rx="10" ry="20"/>
</svg>

橢圓<ellipse>

<ellipse> 標籤可用來建立橢圓。橢圓與圓很類似。不一樣之處在於橢圓有不一樣的 xy 半徑,而圓的 xy 半徑是相同的。dom

屬性 含義
cx 圓心x軸座標
cy 圓心y軸座標
rx 水平半徑
ry 垂直半徑
<svg width="100" height="50">
  <ellipse cx="50" cy="25" rx="50" ry="25"/>
</svg>

路徑<path>

<path> 標籤用來定義路徑。MDN 詳解svg

屬性 含義
d 表示繪製順序,它的值是一個長字符串,每一個字母表示一個繪製動做,後面跟着座標。

支持繪製的動做包括:動畫

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

  • M:移動到(moveto),後緊跟點x座標及y座標,用空格分割
  • L:畫直線到(lineto),後緊跟點x座標及y座標,用空格分割,座標必須成對存在,多個座標用空格分割
  • H:水平畫直線到(horizontal lineto),後緊跟須要水平移動到的X軸座標
  • V:垂直畫直線到(vertical lineto),後緊跟須要水平移動到的Y軸座標
  • C:立方貝賽爾曲線(curveto),它須要考慮兩個控制點。立方貝塞爾曲線的句法是:」C c1x,c1y c2x,c2y x,y「或者」c dc1x,dc1y dc2x,dc2y dx,dy「,在這裏,c1x、c1y和c2x、c2y是分別是初始點和結束點的控制點的絕對座標。dc1x、dc1y和dc2x、dc2y都是相對於初始點,而不是相對於結束點的。dx和dy分別是向右和向下的距離
  • S:平滑的貝塞爾曲線(smooth curveto),語法是」S cx,cy x,y「或者」s dcx,dcy dx,dy「,在這裏(d)cx指定第二個控制點。
  • Q: 二次方貝塞爾曲線(quadratic Belzier curve), 控制點的兩端是相同的。二次方貝塞爾曲線的句法是」Q cx, cy x, y「或」q dcx, dcy dx, dy「。cx和cy都是控制點的絕對座標,而dcx和dcy分別是控制點在x和y方向上的距離。
  • T:二次方貝塞爾平滑曲線smooth quadratic Belzier curveto,它假定第一個控制點是從前一個控制點關於前一個點的反射,或者說若是沒有前一個控制點的話它實際上就是前一個點。T的句法是」T x,y「或者」t dx,dy「,分別對應於絕對座標和相對距離,用來建立二次方貝塞爾曲線。
  • A:橢圓弧曲線路徑(elliptical Arc),」A rx,ry xAxisRotate,LargeArcFlag,SweepFlag x,y「。解構它,rx和ry分別是x和y方向的半徑,而LargeArcFlag的值要到是0要麼是1,用來肯定是要畫小弧(0)仍是畫大弧(1)。SweepFlag也要麼是0要麼是1,用來肯定弧是順時針方向(1)仍是逆時針方向(0)。x和y是目的地的座標。
  • Z:閉合路徑(closepath)

!> 註釋:以上全部命令均容許小寫字母。大寫表示絕對定位,小寫表示相對定位。spa

<svg width="100" height="50">
  <path d="M 0 0
   H 10
   V 10
   H 20
   V 20
   L 0 10 0 20
   C 100,0 " stroke="red"/>
</svg>
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  <path fill="none" stroke="red"
    d="M 10,30
       A 20,20 0,0,1 50,30
       A 20,20 0,0,1 90,30
       Q 90,60 50,90
       Q 10,60 10,30 z" />
</svg>

文本<text>

屬性 含義
x 文本起始橫座標
y 文本起始縱座標

<text> 元素能夠經過<tspan> 元素來分組成多行來顯示。每一個 tspan 元素能夠定義本身獨特的格式和位置。code

!> 文字的樣式能夠用class或style屬性指定。orm

<svg width="200" height="50" xmlns:xlink="https://www.w3.org/1999/xlink">
    <text x="0" y="25">
        <tspan>hello svg</tspan>
        <tspan x="10" y="40">多行文本</tspan>
        <a xlink:href="www.baidu.com" target="_blank">
            <text x="0" y="15" fill="red">連接文本</text>
        </a>
    </text>
    <circle cx="100" cy="25" r="25" fill="#ff5e5e1a" />
    <text x="100" y="25" fill="red" style="dominant-baseline:middle;text-anchor:middle;">居中</text>
</svg>

xmlns:xlink=""這一句引入了xlink命名空間,以支持連接元素屬性定義。
xlink:href和html中的a連接相似,只是多了xlink的命名空間前綴,用來表示連接的目的地址。

複用<use>

use元素在SVG文檔內取得目標節點,並在別的地方複製它們。它的效果等同於這些節點被深克隆到一個不可見的DOM中,而後將其粘貼到use元素的位置,很像HTML5中的克隆模板元素。由於克隆的節點是不可見的,因此當使用CSS樣式化一個use元素以及它的隱藏的後代元素的時候,必須當心注意。隱藏的、克隆的DOM不能保證繼承CSS屬性,除非你明文設置使用CSS繼承。
出於安全緣由,一些瀏覽器可能在use元素上應用同源策略,還有可能拒絕載入xlink:href屬性內的跨源URI。

屬性 含義
x 左上角橫座標
y 左上角縱座標
width 區域寬
height 區域高
xlink:href 引入複製節點
<svg width="100" height="50">
  <text id="useText" x="0" y="10">hello svg</text>
  <use xlink:href="#useText" x="0" y="20"/>
</svg>

多邊形<polygon>

屬性 含義
points 定義多邊形每一個角的xy座標, xy,分割,座標之間用空格分割
<svg width="100" height="50">
  <polygon points="50,0 0,50 100,50"/>
</svg>

分組<g>

<g>標籤用於將多個形狀組成一個組(group),方便複用和管理。

<svg width="300" height="100">
  <g id="myCircle">
    <text x="25" y="20">圓形</text>
    <circle cx="50" cy="50" r="20"/>
  </g>

  <use href="#myCircle" x="100" y="0" fill="blue" />
  <use href="#myCircle" x="200" y="0" fill="white" stroke="blue" />
</svg>

預約義<defs>

<defs>標籤用於自定義形狀,它內部的代碼不會顯示,僅供引用。

<svg width="300" height="100">
  <defs>
    <g id="myCircle">
      <text x="25" y="20">圓形</text>
      <circle cx="50" cy="50" r="20"/>
    </g>
  </defs>

  <use href="#myCircle" x="0" y="0" />
  <use href="#myCircle" x="100" y="0" fill="blue" />
  <use href="#myCircle" x="200" y="0" fill="white" stroke="blue" />
</svg>

<pattern>

<pattern>標籤用於自定義一個形狀,該形狀能夠被引用來平鋪一個區域。

<svg width="500" height="500">
  <defs>
    <pattern id="dots" x="0" y="0" width="100" height="100" patternUnits="userSpaceOnUse">
      <circle fill="#bee9e8" cx="50" cy="50" r="35" />
    </pattern>
  </defs>
  <rect x="0" y="0" width="100%" height="100%" fill="url(#dots)" />
</svg>

上面代碼中,<pattern>標籤將一個圓形定義爲dots模式。patternUnits="userSpaceOnUse"表示 的寬度和長度是實際的像素值。而後,指定這個模式去填充下面的矩形。

圖片<image>

標籤用於插入圖片文件。

屬性 含義
xlink:href 文件來源
width
height
<svg width="100" height="100">
  <image xlink:href="./_statics/images/logo.jpeg" width="50%" height="50%"/>
</svg>

動畫<animate>

<animate>標籤用於產生動畫效果。

屬性 含義
attributeName 發生動畫效果的屬性名
from 單次動畫的初始值。
to 單次動畫的結束值。
dur 單次動畫的持續時間。
repeatCount 動畫的循環模式。

動畫transform變換<animateTransform>

<animate>標籤對CSStransform屬性不起做用,若是須要變形,就要使用<animateTransform>標籤

<svg width="500px" height="500px">
  <rect x="250" y="250" width="50" height="50" fill="#4bc0c8">
    <animateTransform attributeName="transform" type="rotate" begin="0s" dur="10s" from="0 200 200" to="360 400 400" repeatCount="indefinite" />
  </rect>
</svg>

上面代碼中, 的效果爲旋轉(rotate),這時from和to屬性值有三個數字,第一個數字是角度值,第二個值和第三個值是旋轉中心的座標。from="0 200 200"表示開始時,角度爲0,圍繞(200, 200)開始旋轉;to="360 400 400"表示結束時,角度爲360,圍繞(400, 400)旋轉。

相關文章
相關標籤/搜索