如何獲得SVG DOM根目錄,並以編程方式開始向它添加子項,而不是通過標記添加SVG元素?如何操作SVG DOM並創建元素?
3
A
回答
8
<svg xmlns="http://www.w3.org/2000/svg">
<script>
var svg = document.documentElement;
var svgNS = svg.namespaceURI;
var circle = document.createElementNS(svgNS,'circle');
circle.setAttribute('cx',100);
circle.setAttribute('cy',200);
circle.setAttribute('r',50);
circle.setAttribute('fill','red');
circle.setAttribute('stroke','black');
circle.setAttribute('stroke-width','20px');
circle.setAttribute('stroke-opacity','0.5');
svg.appendChild(circle);
</script>
</svg>
在行動中看到:http://phrogz.net/SVG/create-circle.svg
因爲它可以這麼麻煩發行所有這些setAttribute
電話,我經常使用這樣的功能:
// Create an SVG element on another node with a set of attributes.
// Attributes with colons in the name (e.g. 'xlink:href') will automatically
// find the appropriate namespace URI from the SVG element.
// Optionally specify text to create as a child node, for example
// createOn(someGroup,'text',{x:100,'text-anchor':'middle'},"Hello World!");
function createOn(root,name,attrs,text){
var doc = root.ownerDocument, svg = root;
while (svg.tagName!='svg') svg = svg.parentNode;
var el = doc.createElementNS(svg.namespaceURI,name);
for (var a in attrs){
if (!attrs.hasOwnProperty(a)) continue;
var p = a.split(':');
if (p[1]) el.setAttributeNS(svg.getAttribute('xmlns:'+p[0]),p[1],attrs[a]);
else el.setAttribute(a,attrs[a]);
}
if (text) el.appendChild(doc.createTextNode(text));
return root.appendChild(el);
}
在行動,上述文件變得更簡單:
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
<script>
var svg = document.documentElement;
createOn(svg,'circle',{
cx:100, cy:200, r:50,
fill:'red', stroke:'black',
'stroke-width':'20px', 'stroke-opacity':0.5
});
// …function from above…
</script>
</svg>
+0
只是注意'版本'和'baseProfile'是相當無用的。 –
+0
@ErikDahlström哦?很高興知道。鑑於你是誰,我想我必須信任你。我之前一直信任[本頁]的建議(https://jwatt.org/svg/authoring/),其中說,_「相反,始終在根
相關問題
- 1. 如何捕捉DOM元素的創建並使用jQuery來操作它們
- 2. 創建DOM元素
- 3. Angular2 + Typescript:如何操作DOM元素?
- 4. jQuery AJAX - 創建DOM元素
- 5. jQuery的DOM元素創建
- 6. 創建DOM元素時運行函數
- 7. ,javascript可以操作DOM元素嗎?
- 8. 如何樣式/操作SVG的內容USE元素
- 9. 如何操作導入的SVG文件中的內部元素
- 10. 如何使用硒在svg元素內執行拖放操作?
- 11. 如何操作JavaScript的SVG元素樣式?
- 12. 如何操作現有SVG中元素的圖層?
- 13. 如何在創建某個元素時進行操作
- 14. 如何使用不同的元素和操作創建列表?
- 15. 創建SVG元素通過JavaScript
- 16. 創建新SVGNumber或其他SVG元素
- 17. jQuery:創建一個新的DOM元素並顯示它
- 18. 創建DOM元素的構造函數
- 19. 用php dom創建動態元素
- 20. 創建附加jQuery的DOM元素
- 21. 創建和附加一個DOM元素與其它元素
- 22. 創建元素後將值添加到DOM元素
- 23. 將動態創建的元素轉換爲DOM元素
- 24. 如何知道DOM元素何時創建?
- 25. Java:從元素創建DOM元素,而不是文檔
- 26. 如何使用Raphael js創建svg元素?
- 27. 如何創建SVG光標跟蹤元素?
- 28. 如何更改dinamically創建的元素的DOM屬性,並讓它變量
- 29. 如何從嵌入的extern svg文件初始化d3 svg元素並對其進行操作
- 30. 如何使用d3.js添加嵌套的svg元素到dom
'doc.documentElement'? – mc10