2010-07-03 81 views
9

是否可以使用Raphael操作嵌入的SVG圖像?過去我使用Raphael來繪製形狀,但實際上並沒有看到它被用來操作現有的SVG圖像。如果沒有,還有什麼可以讓我輕鬆改變顏色,添加事件等到嵌入式SVG圖像的多邊形?使用Raphael操縱SVG

回答

0

有趣的是,昨天我發現glitchsvgicons頁面這樣做。
雖然在一個非常原始的方式,只是使用正則表達式替換部分。
但它可以提示:顯然你可以使用好的舊搜索/替換SVG圖標上的文本部分。但它比使用真正的Dom樹更容易出現問題...

+0

從缺乏答覆來看,我認爲沒有任何可能使用拉斐爾來做到這一點。我認爲我堅持使用jQuery來操縱DOM樹。 – Max 2010-07-04 10:25:59

4

從我的經驗看Raphael.js來源,我不得不同意以前的帖子。我能想到的替換或修改SVG的唯一方法是替換/修改標記/ DOM本身。

我想在我的答案中加上一個簡短的一般性解釋爲什麼這樣。 Raphael被設計爲SVG/VML 生成器。也就是說,Raphael製作JavaScript對象,並在製作DOM時將相應的SVG/VML標記添加到DOM中。這些對象有許多額外的屬性,這些屬性使它們在Raphael框架內工作。

編寫一個插件可以通過閱讀它的屬性構建一個圍繞SVG元素的Raphael對象,但是,我懷疑這樣的對象可能沒有它需要與其他Raphael對象共存的所有信息。當然,目前沒有這種解析/重構功能。

+0

關於'忍者'模式的拉斐爾文檔支持您的評論。 Raphael'ninja'模式刪除全局Raphael對象,但文檔指出使用'ninja'模式可能會阻止插件工作,因爲他們需要訪問Raphael全局對象[http://raphaeljs.com/reference.html #Raphael.ninja) – 2012-03-21 17:58:53

+0

忍者模式與我的回答無關。我並不是指全局Raphael對象,而是指與Raphael創建的SVG元素相對應的單個對象。 – myw01 2012-03-25 19:41:55