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

svg默认是新生成的元素在最顶层,有时候需要把新添加的放到底层(比如添加个背景图啥的),难道要先生成背景图然后在添加其他元素?那做功能太难了而且后期要改一个可能整个都要重画,偶然发现了用jquery的prepend方法可以实现,简单的测试代码:

<!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>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用XML描述的矢量文件W3C标准(1.1):http://www.w3.org/TR/SVG11/浏览器支持情况...
    没汁帅阅读 6,095评论 0 16
  • SVG API: SVG是一种可缩放矢量图形,一种二维图形表示语言 与canvas不同的是,在浏览器的开发工具中能...
    Iris_mao阅读 1,059评论 0 5
  • @(HTML5)[canvas与SVG] [TOC] 十一 、SVG HTML体系中,最常用的绘制矢量图的技术是S...
    踏浪free阅读 4,643评论 0 2
  • 第一章 HTML5 (2014年10月29日发布)新特性: 10个 (1)新的语义标签 (2)增强型表单 (3)视...
    fastwe阅读 987评论 0 1
  • 背景 当 JavaScript 被 Netscape 公司发明出来时,它被用来做一些琐细的事情,比如校验表单、计算...
    locky丶阅读 2,251评论 0 5