2009-07-09 28 views
4

可能重複:
Include SVG file in SVG梯度服務器作爲外部文件中SVG

在SVG填充屬性接受的URL指向一個梯度/圖案元件,的這樣一個實例稱爲「繪畫服務器」。

的問題:是否有可能在任何瀏覽器(即,不是IE,當然),使用在外部SVG文件中定義的梯度?就像在rect.svg

<rect fill="url(grad.svg#my_grad)" /> 

grad.svg相應<linearGradient />元素?

這將是非常好的,因爲這樣一個可以存儲所有他的梯度/模式在一個文件中,並拿到緩存...

乾杯,

更新:這個問題,其意思是一個Include SVG file in SVG的副本(至少在Firefox中回答問題)。我保持開放,因爲我認爲標題和標籤更有可能被你找到。

+0

你需要明確使用SVG文件在瀏覽器中,還是應該用於SVG編輯(例如,inkscape)。 因爲,如果它只是一個瀏覽器相關的問題,它仍然有可能加載SVG包含圖案/漸變定義,將其插入到DOM,這樣的網址()指的是本地ID – ThibThib 2009-07-09 20:19:30

+0

我知道,從痛苦經驗,它在Inkscape中不起作用。但實際上,目前我更感興趣的是瀏覽器支持。 – Boldewyn 2009-07-10 06:59:03

回答

3

SVG規範只是說你可以使用一個URI - 因此它應該是可能的。瀏覽器支持當然是另一回事。

我只是寫並測試一個小樣本文件。

它不會在Inkscape的工作 - 但它與Apache蠟染工具包工作。

對於瀏覽器的支持,我上傳的文件browsershots.org和總結吧:有些瀏覽器支持外部梯度 - 有些則沒有。 如:

  • 火狐3.0 NO
  • 火狐3.5是
  • 歌劇9.64,10.0是
  • 的Safari 4 NO
  • 的Chrome 2.0 NO
0

如果我理解正確的,URL更改爲

<rect fill="url(grad.svg?param=my_grad" /> 

,然後動態生成SVG?

+0

不是。問題是,目前瀏覽器只能解析`fill =「url中的片段標識符(..)``,就是以#開頭的網址,而不是完整的uris,這與動態生成沒有關係,但是對於* access *和整個外部文件來說是一個問題 – Boldewyn 2009-07-09 18:23:53