動態創建svg元素以及其子元素


1.遇見的問題:項目遇到拓撲圖,是基於svg的,當拓撲圖中的每一個設備點擊選中時,需要彈出一個框,這個框已經封裝好了,但是沒有小三角,好吧,我自己來搞

2.我的實現:當我用document.createElement方法動態生成polygon節點后插入svg節點,並沒有什么卵用。我審查元素時,看到節點確實已經生成了,但是就是不顯示,而且一樣的代碼我復制一遍放到節點中,就有效果。對svg一臉陌生的我,出了蒙圈,還有,好奇。

3.原因查找:用document.createElement創建出來的節點是屬於html dom,而svg的節點是svg dom。所以需要用createElementNS函數並傳入節點名稱的命名空間。

4.動態創建svg:

  var svgDom = document.createElementNS('http://www.w3.org/2000/svg','svg');

  svgDom.setAttribute('width','1000');

  svgDom.setAttribute('height','1000');

  document.body.appendChild(svgDom);

5.動態創建svg的形狀元素,比如 創建一個三角形

  var polygonDom = document.createElementNS('http://www.w3.org/2000/svg','polygon');

  polygonDom.setAttribute('points','200,60 240 ,60 220,80');

  polygonDom.setAttribute('style','fill:black;strock:#ccc;stroke-width:1;');

  svgDom.appendChild(polygonDom);

6.總結:創建svg 節點要用createElementNS函數並且要傳入節點名稱的命名空間。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM