1. 程式人生 > 其它 >前端面試題(8)—— SVG學習(1)

前端面試題(8)—— SVG學習(1)

昨天某公司筆試題碰到這樣一個問題

分析以下程式碼:
    <svg>
        <defs>
            <path id="path1" d="M75,20,a1,1 0 0,0 100,0"></path>
        </defs>
        <a xlink:href="http://www.baidu.com" target="_blank">
            <text x="10" y="100" style="fill: red;">
              <textPath xlink:href="#path1">hello welcome xian</textPath>
        </text>
        </a>
    </svg>
以下程式碼說法正確的是(D)
A 程式碼會生成一個封閉的圓形文字環繞效果
B 文字添加了跳轉連結,在原視窗跳轉到百度頁面
C 程式碼會生成一個半圓型狀的開口向下的文字環繞效果
D 程式碼會生成一個半圓型狀的開口向上的文字環繞效果

看到這道題我就麻了哈哈哈哈,svg這個標籤我貌似都沒接觸到。
不過首先排除B選項,我沒記錯的話 target="_blank" 屬性應該是開啟一個新的視窗;然後我就不會了,隨便懵了一個選項,
結束後,敲了一下這段程式碼,效果如下:


查缺補漏,以下是關於SVG標籤的相關知識啦~

SVG 是使用 XML 來描述二維圖形和繪圖程式的語言。

  • SVG 指可伸縮向量圖形 (Scalable Vector Graphics)
  • SVG 用來定義用於網路的基於向量的圖形
  • SVG 使用 XML 格式定義圖形
  • SVG 影象在放大或改變尺寸的情況下其圖形質量不會有所損失
  • SVG 是全球資訊網聯盟的標準
  • SVG 與諸如 DOM 和 XSL 之類的 W3C 標準是一個整體

與其他影象格式相比,使用 SVG 的優勢在於:

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

SVG 例項
下面的例子是一個簡單的 SVG 檔案的例子。SVG 檔案必須使用 .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">
  <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
</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 程式碼以 <svg> 元素開始,包括開啟標籤 <svg> 和關閉標籤 。這是根元素。width 和 height 屬性可設定此 SVG 文件的寬度和高度。version 屬性可定義所使用的 SVG 版本,xmlns 屬性可定義 SVG 名稱空間。SVG 的 <circle> 用來建立一個圓。cx 和 cy 屬性定義圓中心的 x 和 y 座標。如果忽略這兩個屬性,那麼圓點會被設定為 (0, 0)。r 屬性定義圓的半徑。stroke 和 stroke-width 屬性控制如何顯示形狀的輪廓。我們把圓的輪廓設定為 2px 寬,黑邊框。fill 屬性設定形狀內的顏色。我們把填充顏色設定為紅色。關閉標籤的作用是關閉 SVG 元素和文件本身。
註釋:所有的開啟標籤必須有關閉標籤!