把svg元素新生成的元素置到任意層

svg默認是新生成的元素在最頂層,有時候需要把新添加的放到底層(比如添加個背景圖啥的),難道要先生成背景圖然后在添加其他元素?那做功能太難了而且后期要改一個可能整個都要重畫,偶然發(fā)現(xiàn)了用jquery的prepend方法可以實現(xiàn),簡單的測試代碼:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

? ? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

? ? <title></title>

? ? <script src="jquery-3.2.1.js"></script>

? ? <script type="text/javascript">

? ? ? ? var svgimg

? ? ? ? function test() {

? ? ? ? ? ? $("#svg1").empty();

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

? ? ? ? ? ? svgimg.setAttribute('height', '200');

? ? ? ? ? ? svgimg.setAttribute('width', '200');

? ? ? ? ? ? svgimg.setAttribute('x', '0');

? ? ? ? ? ? svgimg.setAttribute('y', '0');

? ? ? ? ? ? svgimg.setAttribute('points', "0,100 100,0 200,100 100,200")

? ? ? ? ? ? svgimg.setAttribute('style', "fill:red;stroke:#000000;stroke-width:1;")

? ? ? ? ? ? document.getElementById('svg1').appendChild(svgimg);

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

? ? ? ? ? ? svgimg.setAttribute('height', '200');

? ? ? ? ? ? svgimg.setAttribute('width', '200');

? ? ? ? ? ? svgimg.setAttribute('x', '0');

? ? ? ? ? ? svgimg.setAttribute('y', '0');

? ? ? ? ? ? svgimg.setAttribute('points', "50,100 150,0 250,100 150,200")

? ? ? ? ? ? svgimg.setAttribute('style', "fill:green;stroke:#000000;stroke-width:1;")

? ? ? ? ? ? document.getElementById('svg1').appendChild(svgimg);

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

? ? ? ? ? ? svgimg.setAttribute('height', '200');

? ? ? ? ? ? svgimg.setAttribute('width', '200');

? ? ? ? ? ? svgimg.setAttribute('x', '0');

? ? ? ? ? ? svgimg.setAttribute('y', '0');

? ? ? ? ? ? svgimg.setAttribute('points', "100,100 200,0 300,100 200,200")

? ? ? ? ? ? svgimg.setAttribute('style', "fill:blue;stroke:#000000;stroke-width:1;")

? ? ? ? ? ? document.getElementById('svg1').appendChild(svgimg);

? ? ? ? }

? ? ? ? function bb() {

? ? ? ? ? ? $("#svg1").prepend($("polygon")[2]);

? ? ? ? }

? ? </script>

</head>

<body>

? ? <button onclick="test();">添加菱形</button>

? ? <input type="button" onclick="bb()" value="把最上層置為底層" />

? ? <svg id="svg1" width="600" height="600" viewBox="0 0 600 600"

? ? ? ? xmlns="http://www.w3.org/2000/svg"

? ? ? ? xmlns:xlink="http://www.w3.org/1999/xlink">

? ? </svg>

</body>

</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 使用XML描述的矢量文件W3C標準(1.1):http://www.w3.org/TR/SVG11/瀏覽器支持情況...
    沒汁帥閱讀 6,161評論 0 16
  • SVG API: SVG是一種可縮放矢量圖形,一種二維圖形表示語言 與canvas不同的是,在瀏覽器的開發(fā)工具中能...
    Iris_mao閱讀 1,090評論 0 5
  • @(HTML5)[canvas與SVG] [TOC] 十一 、SVG HTML體系中,最常用的繪制矢量圖的技術(shù)是S...
    踏浪free閱讀 4,774評論 0 2
  • 第一章 HTML5 (2014年10月29日發(fā)布)新特性: 10個 (1)新的語義標簽 (2)增強型表單 (3)視...
    fastwe閱讀 1,032評論 0 1
  • 背景 當 JavaScript 被 Netscape 公司發(fā)明出來時,它被用來做一些瑣細的事情,比如校驗表單、計算...
    locky丶閱讀 2,354評論 0 5

友情鏈接更多精彩內(nèi)容