一、SVGDefs概述
SVGDefs是SVG的一個元素,它是SVG的一個可復用性部件,可以反覆使用。當你需要在不同的地方使用相同的元素或屬性時,SVGDefs可以讓你定義一次,然後在文檔中的任何地方重複使用。
SVGDefs元素通常定義在SVG文件的最頂層,通常是在<svg>元素內。舉個例子,你可以使用SVGDefs定義一個漸變,然後在圖形中的多個元素中引用這個漸變。
二、SVGDefs的常見使用
1、定義圖形元素
SVGDefs可以用來定義被多個圖形元素所共享的圖形元素,這些圖形元素可以是:形狀、路徑、圖案、漸變、濾鏡、圖像等。
<svg> <defs> <path id="my-path" d="M100,100 h50 v50 h-50 z"/> </defs> <use xlink:href="#my-path" fill="red"/> <use xlink:href="#my-path" fill="blue" transform="translate(50,50)"/> </svg>
在上述示例中,我們使用SVGDefs定義了一個路徑元素,並且通過<use>
元素來引用它,並對兩個元素進行不同的填充。
2、使用漸變顏色
SVGDefs可以用來定義一個顏色漸變,並在多個圖形元素中引用它。
<svg> <defs> <linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" style="stop-color:rgb(255,0,0);stop-opacity:1" /> <stop offset="100%" style="stop-color:rgb(0,255,0);stop-opacity:1" /> </linearGradient> </defs> <rect x="10" y="10" width="150" height="80" fill="url(#grad)" /> </svg>
在這個示例中,我們定義了一個沿着水平方向的線性漸變,並使用<use>
元素,在一個矩形元素中應用它。
三、使用SVGDefs的注意事項
1、SVGDefs只能在當前文檔中使用
SVGDefs只能在SVG的當前文檔中使用,不能在外部文件中引用。如果想要在多個SVG文件中共享一個SVGDefs元素,需要將定義放在每個文件內,並保證id的名稱一致。
2、id屬性必須唯一
在SVGDefs中定義的元素,必須給定一個唯一的id屬性,以便在其它地方引用它們。
3、SVGDefs中的元素必須被支持
SVGDefs中的元素必須被SVG標準所支持,否則可能會導致瀏覽器無法正確識別。
4、SVGDefs中的元素可以被JavaScript所操作
可以使用JavaScript對SVGDefs中的元素進行操作,這樣可以動態地改變SVG元素的定義。
<svg> <defs> <rect id="myRect" x="50" y="50" width="100" height="100" /> </defs> <script> function changeColor() { var elem = document.getElementById("myRect"); elem.setAttribute("fill", "red"); } </script> <use xlink:href="#myRect" fill="blue" onclick="changeColor()"/> </svg>
在這個示例中,我們定義了一個矩形元素,並在SVG中使用一個<use>
元素進行引用,同時在JavaScript中定義了一個函數changeColor()
來改變矩形的顏色。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187523.html