走進SVG

WBOY
WBOY原創
2016-09-29 09:19:071314瀏覽

什麼是SVG?也許現在很多人都聽過SVG的人比較多,但不一定了解什麼是SVG:SVG(Scalable Vector Graphics 一大串看不懂的英文)可伸縮向量圖形,它是用XML格式來定義用於網路的基於向量的圖形,而它的特點是 圖像在放大或改變尺寸的情況下其圖形品質不會有所損失,同時他和DOM一樣都是W3C的一個標準。

這裡解釋下位圖和向量圖:

位圖,也就是我們經常能看到的圖片,他是一個平面上密集排布的店的集合,也就是說它是由一個個點構成的。而如果對他進行放大那麼相對應的點就會進行放大,這樣就會讓圖片顯得十分不清晰粗糙。

向量圖,也稱為物件導向的圖像或繪圖圖像,在數學上定義為一系列由線連接的點。向量檔案中的圖形元素稱為物件。每個物件都是一個自成一體的實體,它具有顏色、形狀、輪廓、大小和螢幕位置等屬性。它的特點是放大後影像不會失真,和解析度無關,適用於圖形設計、文字設計和一些標誌設計、版式設計等。向量圖格式有CGM, SVG, AI (Adobe Illustrator), CDR (CorelDRAW), PDF, SWF, VML等。

(ps:本隨筆下面的內容部分來自W3Cschool)

一個簡單的SVG

<span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">xml version="1.0" standalone="no"</span><span style="color: #0000ff;">?></span>
<span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"</span><span style="color: #0000ff;">></span>

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">circle </span><span style="color: #ff0000;">cx</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;"> r</span><span style="color: #0000ff;">="40"</span><span style="color: #ff0000;"> stroke</span><span style="color: #0000ff;">="black"</span><span style="color: #ff0000;">
  stroke-width</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;"> fill</span><span style="color: #0000ff;">="red"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>

SVG 程式碼解析:

第一行包含了 XML 宣告。請注意 standalone 屬性!此屬性規定此 SVG 檔案是否為"獨立的",或含有外部檔案的參考。 standalone="no" 表示 SVG 文件會引用一個外部檔案 - 在這裡,是 DTD 檔案。

第二和第三行引用了這個外部的 SVG DTD。該 DTD 位於 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"。該 DTD 位於 W3C,含有所有允許的 SVG 元素。

SVG 程式碼以 元素開始,包括開啟標籤 和關閉標籤 。這是根元素。 width 和 height 屬性可設定此 SVG 文件的寬度和高度。 version 屬性可定義所使用的 SVG 版本,xmlns 屬性可定義 SVG 命名空間。

SVG 的 用來建立一個圓。 cx 和 cy 屬性定義圓中心的 x 和 y 座標。如果忽略這兩個屬性,那麼圓點會被設定為 (0, 0)。 r 屬性定義圓的半徑。

stroke 和 stroke-width 屬性控制如何顯示形狀的輪廓。我們把圓的輪廓設定為 2px 寬,黑邊框。 fill 屬性設定形狀內的顏色。我們把填滿顏色設定為紅色。

關閉標籤的作用是關閉 SVG 元素和文件本身。

註解:所有的開啟標籤必須有關閉標籤!

SVG的優勢

  • SVG 可被非常多的工具讀取和修改(記事本也可以輕鬆打開修改)
  • SVG 與 JPEG 和 GIF 影像比起來,尺寸更小,且可壓縮性更強。
  • SVG 是可伸縮的
  • SVG 影像可在任何的解析度下被高品質地列印
  • SVG 可在影像品質不下降的情況下放大
  • SVG 圖像中的文字是可選的,同時也是可搜尋的(很適合製作地圖)
  • SVG 可以與 Java 等技術一起運行
  • SVG 是開放的標準
  • SVG 檔案是純粹的 XML

SVG 檔案可透過以下標籤嵌入 HTML 文件:

SVG的程式碼可以直接嵌入到HTML頁面中,或者您可以直接連結到SVG檔案。

矩形

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #ff0000;">
xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #0000ff;">></span>

<span style="color: #0000ff;"><</span><span style="color: #800000;">rect </span><span style="color: #ff0000;">x</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;"> y</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;"> rx</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;"> ry</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;"> width</span><span style="color: #0000ff;">="250"</span><span style="color: #ff0000;">
height</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="fill:red;stroke:black;
stroke-width:5;opacity:0.5"</span><span style="color: #0000ff;">/></span>

<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • rect 元素的 width 和 height 属性可定义矩形的高度和宽度

  • style 属性用来定义 CSS 属性

  • CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)

  • CSS 的 stroke-width 属性定义矩形边框的宽度

  • CSS 的 stroke 属性定义矩形边框的颜色

  • x 属性定义矩形的左侧位置(例如,x="0" 定义矩形到浏览器窗口左侧的距离是 0px)

  • y 属性定义矩形的顶端位置(例如,y="0" 定义矩形到浏览器窗口顶端的距离是 0px)

  • CSS 的 fill-opacity 属性定义填充颜色透明度(合法的范围是:0 - 1)

  • CSS 的 stroke-opacity 属性定义笔触颜色的透明度(合法的范围是:0 - 1)

  • CSS opacity 属性用于定义了元素的透明值 (范围: 0 到 1)。

  • rx 和 ry 属性可使矩形产生圆角。

圆形

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">circle </span><span style="color: #ff0000;">cx</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;"> r</span><span style="color: #0000ff;">="40"</span><span style="color: #ff0000;"> stroke</span><span style="color: #0000ff;">="black"</span><span style="color: #ff0000;">
  stroke-width</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;"> fill</span><span style="color: #0000ff;">="red"</span><span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • cx和cy属性定义圆点的x和y坐标。如果省略cx和cy,圆的中心会被设置为(0, 0)

  • r属性定义圆的半径

椭圆

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">ellipse </span><span style="color: #ff0000;">cx</span><span style="color: #0000ff;">="240"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;"> rx</span><span style="color: #0000ff;">="220"</span><span style="color: #ff0000;"> ry</span><span style="color: #0000ff;">="30"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="fill:purple"</span><span style="color: #0000ff;">/></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">ellipse </span><span style="color: #ff0000;">cx</span><span style="color: #0000ff;">="220"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="70"</span><span style="color: #ff0000;"> rx</span><span style="color: #0000ff;">="190"</span><span style="color: #ff0000;"> ry</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="fill:lime"</span><span style="color: #0000ff;">/></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">ellipse </span><span style="color: #ff0000;">cx</span><span style="color: #0000ff;">="210"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="45"</span><span style="color: #ff0000;"> rx</span><span style="color: #0000ff;">="170"</span><span style="color: #ff0000;"> ry</span><span style="color: #0000ff;">="15"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="fill:yellow"</span><span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • CX属性定义的椭圆中心的x坐标

  • CY属性定义的椭圆中心的y坐标

  • RX属性定义的水平半径

  • RY属性定义的垂直半径

线

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">line </span><span style="color: #ff0000;">x1</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> y1</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> x2</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;"> y2</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">
  style</span><span style="color: #0000ff;">="stroke:rgb(255,0,0);stroke-width:2"</span><span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • x1 属性在 x 轴定义线条的开始

  • y1 属性在 y 轴定义线条的开始

  • x2 属性在 x 轴定义线条的结束

  • y2 属性在 y 轴定义线条的结束

多边形

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">polygon </span><span style="color: #ff0000;">points</span><span style="color: #0000ff;">="200,10 250,190 160,210"</span><span style="color: #ff0000;">
  style</span><span style="color: #0000ff;">="fill:lime;stroke:purple;stroke-width:1"</span><span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • points 属性定义多边形每个角的 x 和 y 坐标

折线 (用于创建任何只有直线的形状)

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">polyline </span><span style="color: #ff0000;">points</span><span style="color: #0000ff;">="20,20 40,25 60,40 80,120 120,140 200,180"</span><span style="color: #ff0000;">
  style</span><span style="color: #0000ff;">="fill:none;stroke:black;stroke-width:3"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>

路径

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">path </span><span style="color: #ff0000;">d</span><span style="color: #0000ff;">="M150 0 L75 200 L225 200 Z"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>

 

元素用于定义一个路径。

下面的命令可用于路径数据:

  • 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

注意:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

文本

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">text </span><span style="color: #ff0000;">x</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> y</span><span style="color: #0000ff;">="15"</span><span style="color: #ff0000;"> fill</span><span style="color: #0000ff;">="red"</span><span style="color: #ff0000;"> transform</span><span style="color: #0000ff;">="rotate(30 20,40)"</span><span style="color: #0000ff;">></span>I love SVG<span style="color: #0000ff;"></</span><span style="color: #800000;">text</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>

SVG 滤镜

SVG可用的滤镜是:

  • feBlend - 与图像相结合的滤镜
  • feColorMatrix - 用于彩色滤光片转换
  • feComponentTransfer
  • feComposite
  • feConvolveMatrix
  • feDiffuseLighting
  • feDisplacementMap
  • feFlood
  • feGaussianBlur
  • feImage
  • feMerge
  • feMorphology
  • feOffset - 过滤阴影
  • feSpecularLighting
  • feTile
  • feTurbulence
  • feDistantLight - 用于照明过滤
  • fePointLight - 用于照明过滤
  • feSpotLight - 用于照明过滤

除此之外,您可以在每个 SVG 元素上使用多个滤镜!

所有互联网的SVG滤镜定义在元素中。元素定义短并含有特殊元素(如滤镜)定义。

标签用来定义SVG滤镜。标签使用必需的id属性来定义向图形应用哪个滤镜?

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
    <span style="color: #0000ff;"><</span><span style="color: #800000;">filter </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="f1"</span><span style="color: #ff0000;"> x</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> y</span><span style="color: #0000ff;">="0"</span><span style="color: #0000ff;">></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">feGaussianBlur </span><span style="color: #ff0000;">in</span><span style="color: #0000ff;">="SourceGraphic"</span><span style="color: #ff0000;"> stdDeviation</span><span style="color: #0000ff;">="15"</span> <span style="color: #0000ff;">/></span>
    <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"></</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">rect </span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="90"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="90"</span><span style="color: #ff0000;"> stroke</span><span style="color: #0000ff;">="green"</span><span style="color: #ff0000;"> stroke-width</span><span style="color: #0000ff;">="3"</span><span style="color: #ff0000;">
  fill</span><span style="color: #0000ff;">="yellow"</span><span style="color: #ff0000;"> filter</span><span style="color: #0000ff;">="url(#f1)"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • 元素id属性定义一个滤镜的唯一名称

  • 元素定义模糊效果

  • in="SourceGraphic"这个部分定义了由整个图像创建效果

  • stdDeviation属性定义模糊量

  • 元素的滤镜属性用来把元素链接到"f1"滤镜

SVG

元素是用于创建阴影效果。我们的想法是采取一个SVG图形(图像或元素)并移动它在xy平面上一点儿。

第一个例子偏移一个矩形(带),然后混合偏移图像顶部(含):

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
    <span style="color: #0000ff;"><</span><span style="color: #800000;">filter </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="f1"</span><span style="color: #ff0000;"> x</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> y</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> width</span><span style="color: #0000ff;">="200%"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="200%"</span><span style="color: #0000ff;">></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">feOffset </span><span style="color: #ff0000;">result</span><span style="color: #0000ff;">="offOut"</span><span style="color: #ff0000;"> in</span><span style="color: #0000ff;">="SourceGraphic"</span><span style="color: #ff0000;"> dx</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;"> dy</span><span style="color: #0000ff;">="20"</span> <span style="color: #0000ff;">/></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">feBlend </span><span style="color: #ff0000;">in</span><span style="color: #0000ff;">="SourceGraphic"</span><span style="color: #ff0000;"> in2</span><span style="color: #0000ff;">="offOut"</span><span style="color: #ff0000;"> mode</span><span style="color: #0000ff;">="normal"</span> <span style="color: #0000ff;">/></span>
    <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"></</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">rect </span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="90"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="90"</span><span style="color: #ff0000;"> stroke</span><span style="color: #0000ff;">="green"</span><span style="color: #ff0000;"> stroke-width</span><span style="color: #0000ff;">="3"</span><span style="color: #ff0000;">
  fill</span><span style="color: #0000ff;">="yellow"</span><span style="color: #ff0000;"> filter</span><span style="color: #0000ff;">="url(#f1)"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • 元素id属性定义一个滤镜的唯一名称
  • 元素的滤镜属性用来把元素链接到"f1"滤镜
<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
    <span style="color: #0000ff;"><</span><span style="color: #800000;">filter </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="f1"</span><span style="color: #ff0000;"> x</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> y</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> width</span><span style="color: #0000ff;">="200%"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="200%"</span><span style="color: #0000ff;">></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">feOffset </span><span style="color: #ff0000;">result</span><span style="color: #0000ff;">="offOut"</span><span style="color: #ff0000;"> in</span><span style="color: #0000ff;">="SourceGraphic"</span><span style="color: #ff0000;"> dx</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;"> dy</span><span style="color: #0000ff;">="20"</span> <span style="color: #0000ff;">/></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">feGaussianBlur </span><span style="color: #ff0000;">result</span><span style="color: #0000ff;">="blurOut"</span><span style="color: #ff0000;"> in</span><span style="color: #0000ff;">="offOut"</span><span style="color: #ff0000;"> stdDeviation</span><span style="color: #0000ff;">="10"</span> <span style="color: #0000ff;">/></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">feBlend </span><span style="color: #ff0000;">in</span><span style="color: #0000ff;">="SourceGraphic"</span><span style="color: #ff0000;"> in2</span><span style="color: #0000ff;">="blurOut"</span><span style="color: #ff0000;"> mode</span><span style="color: #0000ff;">="normal"</span> <span style="color: #0000ff;">/></span>
    <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"></</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">rect </span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="90"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="90"</span><span style="color: #ff0000;"> stroke</span><span style="color: #0000ff;">="green"</span><span style="color: #ff0000;"> stroke-width</span><span style="color: #0000ff;">="3"</span><span style="color: #ff0000;">
  fill</span><span style="color: #0000ff;">="yellow"</span><span style="color: #ff0000;"> filter</span><span style="color: #0000ff;">="url(#f1)"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • 元素的stdDeviation属性定义了模糊量

SVG 渐变

渐变是一种从一种颜色到另一种颜色的平滑过渡。另外,可以把多个颜色的过渡应用到同一个元素上。

SVG渐变主要有两种类型:

  • Linear

  • Radial

SVG 线性渐变 -

元素用于定义线性渐变。

标签必须嵌套在的内部。标签是definitions的缩写,它可对诸如渐变之类的特殊元素进行定义。

线性渐变可以定义为水平,垂直或角渐变:

  • 当y1和y2相等,而x1和x2不同时,可创建水平渐变

  • 当x1和x2相等,而y1和y2不同时,可创建垂直渐变

  • 当x1和x2不同,且y1和y2不同时,可创建角形渐变

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
    <span style="color: #0000ff;"><</span><span style="color: #800000;">linearGradient </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="grad1"</span><span style="color: #ff0000;"> x1</span><span style="color: #0000ff;">="0%"</span><span style="color: #ff0000;"> y1</span><span style="color: #0000ff;">="0%"</span><span style="color: #ff0000;"> x2</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;"> y2</span><span style="color: #0000ff;">="0%"</span><span style="color: #0000ff;">></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">stop </span><span style="color: #ff0000;">offset</span><span style="color: #0000ff;">="0%"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="stop-color:rgb(255,255,0);stop-opacity:1"</span> <span style="color: #0000ff;">/></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">stop </span><span style="color: #ff0000;">offset</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="stop-color:rgb(255,0,0);stop-opacity:1"</span> <span style="color: #0000ff;">/></span>
    <span style="color: #0000ff;"></</span><span style="color: #800000;">linearGradient</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"></</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">ellipse </span><span style="color: #ff0000;">cx</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="70"</span><span style="color: #ff0000;"> rx</span><span style="color: #0000ff;">="85"</span><span style="color: #ff0000;"> ry</span><span style="color: #0000ff;">="55"</span><span style="color: #ff0000;"> fill</span><span style="color: #0000ff;">="url(#grad1)"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • 标签的id属性可为渐变定义一个唯一的名称

  • 标签的X1,X2,Y1,Y2属性定义渐变开始和结束位置

  • 渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个标签来规定。offset属性用来定义渐变的开始和结束位置。

  • 填充属性把 ellipse 元素链接到此渐变

SVG 放射性渐变 -

元素用于定义放射性渐变。

标签必须嵌套在的内部。标签是definitions的缩写,它可对诸如渐变之类的特殊元素进行定义。

<span style="color: #0000ff;"><</span><span style="color: #800000;">svg </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #ff0000;"> version</span><span style="color: #0000ff;">="1.1"</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
    <span style="color: #0000ff;"><</span><span style="color: #800000;">radialGradient </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="grad1"</span><span style="color: #ff0000;"> cx</span><span style="color: #0000ff;">="50%"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="50%"</span><span style="color: #ff0000;"> r</span><span style="color: #0000ff;">="50%"</span><span style="color: #ff0000;"> fx</span><span style="color: #0000ff;">="50%"</span><span style="color: #ff0000;"> fy</span><span style="color: #0000ff;">="50%"</span><span style="color: #0000ff;">></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">stop </span><span style="color: #ff0000;">offset</span><span style="color: #0000ff;">="0%"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="stop-color:rgb(255,255,255);
      stop-opacity:0"</span> <span style="color: #0000ff;">/></span>
      <span style="color: #0000ff;"><</span><span style="color: #800000;">stop </span><span style="color: #ff0000;">offset</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="stop-color:rgb(0,0,255);stop-opacity:1"</span> <span style="color: #0000ff;">/></span>
    <span style="color: #0000ff;"></</span><span style="color: #800000;">radialGradient</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"></</span><span style="color: #800000;">defs</span><span style="color: #0000ff;">></span>
  <span style="color: #0000ff;"><</span><span style="color: #800000;">ellipse </span><span style="color: #ff0000;">cx</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;"> cy</span><span style="color: #0000ff;">="70"</span><span style="color: #ff0000;"> rx</span><span style="color: #0000ff;">="85"</span><span style="color: #ff0000;"> ry</span><span style="color: #0000ff;">="55"</span><span style="color: #ff0000;"> fill</span><span style="color: #0000ff;">="url(#grad1)"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">></span>
  • 标签的 id 属性可为渐变定义一个唯一的名称

  • CX,CY和r属性定义的最外层圆和Fx和Fy定义的最内层圆

  • 渐变颜色范围可以由两个或两个以上的颜色组成。每种颜色用一个标签指定。offset属性用来定义渐变色开始和结束

  • 填充属性把ellipse元素链接到此渐变

菜鸟教程的在线实例:http://www.runoob.com/svg/svg-examples.html

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:CSS清除浮動下一篇:CSS清除浮動