案例一:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
body{
background:#;
}
#demo1{
width:780px;
height:400px;
background:url(images/bg.jpg) no-repeat;
margin:20px auto;
overflow:hidden;
} </style>
<script type="text/javascript">
/*
中心点
x : 780/2 = 390
y : 400/2 = 200
*/
//一条线的中心坐标 x :(100+390)/2 = 245
// y : (100+200) /2 = 150
</script>
</head>
<body>
<div id="demo1">
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
        <g style="cursor:pointer">
            <line x1="" y1="" x2="" y2="" stroke="#eee"></line> 
            <!--为解决用户鼠标经过 线 出现手势光标效果 需要复制一份线-->
            <line x1="" y1="" x2="" y2="" stroke="transparent" stroke-width=""></line> 
            <!--rect 居中方法:默认起点是左上角, y=y-width/; x=x-height/ -->
            <rect x="" y="" width="" height="" fill="#999" rx="" ></rect>
            <!-- text 文字居中方法:y=y+字体的大小/ x=x+字体大小/ -->
            <text x="" y="" font-size="" fill="white" text-anchor="middle">?</text>
        </g>
        <g style="cursor:pointer">
            <circle cx="" cy="" r="" stroke="red" stroke-width="" fill="white"></circle>
            <text x="" y="" font-size="" text-anchor="middle">凤凰网</text>
        </g>
        <g style="cursor:pointer">
            <circle cx="" cy="" r="" stroke="red" stroke-width="" fill="white"></circle>
            <text x="" y="" font-size="" text-anchor="middle" font-family="黑体">NBA</text>
        </g>
    </svg>
</div>
</body>
</html>

案例二:

动态去创建

创建元素
        1、createElementNS
         -两个参数
         -命名空间,标签名
        2、封装createTag函数
        3、分离数据

Demo1:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
body{
background:#;
}
#demo1{
width:780px;
height:400px;
background:url(images/bg.jpg) no-repeat;
margin:20px auto;
overflow:hidden;
} </style>
<script type="text/javascript">
/*
创建元素
1、createElementNS
-两个参数
-命名空间,标签名
2、封装createTag函数
3、分离数据
*/
window.onload = function (){
//普通创建元素
//document.createElement('div'); //SVG 创建元素
//document.createElementNS(s,t), 包含2个参数,s->命名空间;t->标签元素
var svgNS = 'http://www.w3.org/2000/svg'; //命名空间
var oSvg = document.createElementNS(svgNS,'svg'); //创建了一个svg元素
var oDemo1 = document.getElementById('demo1'); oSvg.setAttribute('xmlns',svgNS);
oSvg.setAttribute('width','100%');
oSvg.setAttribute('height','100%');
oDemo1.appendChild(oSvg);
}
</script>
</head>
<body>
<div id="demo1"></div>
</body>
</html>

Demo2:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
body{
background:#;
}
#demo1{
width:780px;
height:400px;
background:url(images/bg.jpg) no-repeat;
margin:20px auto;
overflow:hidden;
} </style>
<script type="text/javascript">
window.onload = function (){
var svgNS = 'http://www.w3.org/2000/svg';
var oDemo1 = document.getElementById('demo1'); function createTag(tag,objAttr){
var oTag = document.createElementNS(svgNS,tag);
for(var attr in objAttr){
oTag.setAttribute(attr,objAttr[attr]);
}
return oTag;
} var oSvg = createTag('svg',{'xmlns':svgNS,'width':'100%','height':'100%'});
var oG = createTag('g',{'style':'cursor:pointer'});
var oLine1 = createTag('line',{'x1':'','y1':'','x2':'','y2':'','stroke':'#eee'})
var oLine2 = createTag('line',{'x1':'','y1':'','x2':'','y2':'','stroke':'transparent','stroke-width':''});
var oRect = createTag('rect',{'x':'','y':'','fill':'#999','width':'','height':'','rx':''});
var oText = createTag('text',{'x':'','y':'','fill':'white','font-size':'','text-anchor':'middle'})
oText.innerHTML = '?';
oG.appendChild(oLine1);
oG.appendChild(oLine2);
oG.appendChild(oRect);
oG.appendChild(oText); oSvg.appendChild(oG);
oDemo1.appendChild(oSvg);
}
</script>
</head>
<body>
<div id="demo1">
</div>
</body>
</html>

Demo3:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>svg</title>
<style>
#demo1{ width:780px; height:400px; background:url(images/bg.jpg) no-repeat; margin:20px auto; overflow:hidden;}
body{ background:black;}
</style>
<script>
//780/2 -> x : 390
//400/2 -> y : 200 //(100 + 390)/2 -> 中心点x : 245
//(100 + 200)/2 -> 中心点y : 150 window.onload = function(){
var svgNS = 'http://www.w3.org/2000/svg';
var oParent = document.getElementById('demo1');
var centerX = oParent.offsetWidth/;
var centerY = oParent.offsetHeight/; var data = {
centerNode : { text : 'NBA' },
otherNode : [
{ x : , y : , text : '凤凰网' },
{ x : , y : , text : '新浪网' },
{ x : , y : , text : '搜狐网' }
]
}; function createTag(tag,objAttr){
var oTag = document.createElementNS(svgNS , tag);
for(var attr in objAttr){
oTag.setAttribute(attr , objAttr[attr]);
}
return oTag;
} function addTag(){
var oSvg = createTag('svg',{'xmlns':svgNS,'width':'100%','height':'100%'});
for(var i=;i<data.otherNode.length;i++){
addOtherTag( data.otherNode[i] , oSvg );
}
var oG = createTag('g',{'style':'cursor:pointer'});
var oCircle = createTag('circle',{'cx':centerX,'cy':centerY,'r':'','fill':'white','stroke':'red','stroke-width':''});
var oText = createTag('text',{'x':centerX,'y':centerY+,'font-size':'','text-anchor':'middle'});
oText.innerHTML = data.centerNode.text; oG.appendChild(oCircle);
oG.appendChild(oText); oSvg.appendChild(oG);
oParent.appendChild(oSvg);
} addTag(); function addOtherTag(otherAttr , oSvg){
var oG = createTag('g',{'style':'cursor:pointer'});
var oLine1 = createTag('line',{'x1':otherAttr.x,'y1':otherAttr.y,'x2':centerX,'y2':centerY,'stroke':'#ccc'});
var oLine2 = createTag('line',{'x1':otherAttr.x,'y1':otherAttr.y,'x2':centerX,'y2':centerY,'stroke':'transparent','stroke-width':''});
var oRect = createTag('rect',{'x': (otherAttr.x + centerX)/ - ,'y': (otherAttr.y + centerY)/ - ,'fill':'#999','width':'','height':'','rx':''});
var oText = createTag('text',{'x':(otherAttr.x + centerX)/,'y':(otherAttr.y + centerY)/ + ,'fill':'white','font-size':'','text-anchor':'middle'});
oText.innerHTML = '?'; oG.appendChild(oLine1);
oG.appendChild(oLine2);
oG.appendChild(oRect);
oG.appendChild(oText); oSvg.appendChild(oG); var oG = createTag('g',{'style':'cursor:pointer'});
var oCircle = createTag('circle',{'cx':otherAttr.x,'cy':otherAttr.y,'r':'','fill':'white','stroke':'red','stroke-width':''});
var oText = createTag('text',{'x':otherAttr.x,'y':otherAttr.y+,'font-size':'','text-anchor':'middle'});
oText.innerHTML = otherAttr.text; oG.appendChild(oCircle);
oG.appendChild(oText); oSvg.appendChild(oG);
}
}; </script>
</head> <body>
<div id="demo1"></div>
</body>
</html>

SVG案例:动态去创建元素createElementNS的更多相关文章

  1. SVG 案例:动态去创建分支节点,当鼠标经过某个节点时,分支线会高亮

    css: <style> #div1{ width:780px; height:400px; background:#fff; margin:20px auto; overflow:hid ...

  2. js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理

    动态创建元素的三种方式: 第一种: Document.write(); <body> <input type="button" id="btn" ...

  3. JavaScript 、jQuery动态创建元素的关键字~

    JavaScript动态创建元素: 1.创建元素  如:a 标签 var alink= document.createElement("a"); 2.j添加元素属性 alink.h ...

  4. Javascript:DOM动态创建元素实例应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. JS动态创建元素

    动态添加标签,可从服务器获取标签文本,然后加载到指定div中,可用于权限控制. 1.添加标签字符串方式 var str='<div>5555555555555555555555555555 ...

  6. jquery利用appendTo动态创建元素

    动态创建元素可以说是DOM中常做的事情,下面我来介绍在jquery中利用appendTo来动态创建元素,有需要的朋友可参考参考. 当HTML字符串是没有属性的元素是, 内部使用document.cre ...

  7. JS动态创建元素(两种方法)

    前言 创建元素有两种方法 1)将需要创建的元素,以字符串的形式拼接:找到父级元素,直接对父级元素的innnerHTML进行赋值. 2)使用Document.Element对象自带的一些函数,来实现动态 ...

  8. 解决jquery动态创建元素绑定事件失效问题

    存在问题 在我们使用jquery动态创建元素后往往会遇到一些问题,如: 给.button按钮绑定了点击时间,执行alert:(1); 点击事件代码如下: <script>$("# ...

  9. 3、jquery_动态创建元素

    动态创建元素:$('<b>javier</b>') $('#Button1').append($('<b>javier</b>')) 等价于  $($( ...

随机推荐

  1. RMQ Tarjan的Sparse-Table算法

    参考博客:https://www.cnblogs.com/wenzhixin/p/9714760.html 预处理时间复杂度是O(nlogn),代码如下: void init(const vector ...

  2. springboot整合dubbo+zookeeper最新详细

    引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...

  3. Python第六章-函数02-函数的作用域

    函数 三.作用域规则 有了函数之后,我们必须要面对一个作用域的问题. 比如:你现在访问一个变量,那么 python 解析器是怎么查找到这个变量,并读取到这个变量的值的呢? 依靠的就是作用域规则! 3. ...

  4. Github标星3K+,热榜第三,一网打尽数据科学速查表

    这几天,Github上的趋势榜一天一换. 这次一个名为 Data-Science--Cheat-Sheet 的项目突然蹿到了第三名. 仔细一看,确实干货满满.来,让文摘菌推荐一下~ 这个项目本质上是备 ...

  5. Python第六章-函数06-高阶函数

    函数的高级应用 二.高阶函数 高级函数, 英文叫 Higher-order Function. 那么什么是高阶函数呢? 在说明什么是=高阶函数之前, 我们需要对函数再做进一步的理解! 2.1 函数的本 ...

  6. Typora+markdown 最常用语法教程

    Typora+markdown 最常用语法教程(by 程序员宝藏) Typora+markdown 最常用语法教程(by 程序员宝藏) 请先配置推荐配置(文件->偏好设置): 文章目录 Typo ...

  7. Python第十一章-常用的核心模块04-datetime模块

    python 自称 "Batteries included"(自带电池, 自备干粮?), 就是因为他提供了很多内置的模块, 使用这些模块无需安装和配置即可使用. 本章主要介绍 py ...

  8. 医学图像分割-在3DSlicer中使用英伟达的AI辅助工具NvidiaAIAssistedAnnotation自动切割医学图像教程

    前期准备 下载3DSlicer并安装: 3DSlicer官网(http://www.slicer.org)或者直接下载(https://download.slicer.org),需要注意目前该插件只支 ...

  9. linux中的文件类型、时间戳、文件管理

    一.linux 文件类型 1.普通文件:- ,f 2.目录文件:d 3.链接文件(符号链接):l 4.设备文件 字符设备(线性设备):c 块设备(非线性设备):b 5.命名设备:p 6.套接字文件:s ...

  10. NKOJ 1353 图形面积

    时间限制 : 10000 MS   空间限制 : 65536 KB 问题描述 桌面上放了N个矩形,这N个矩形可能有互相覆盖的部分,求它们组成的图形的面积.(矩形的边都与坐标轴平行) 输入格式 输入第一 ...