HTML5 svg,JavaScript svg

  HTML5 svg,JavaScript svg

  使用脚本可以很方便的完成各种复杂的任务,也是完成动画和交互的一种主流方式。由于挽救(保存的简写)是超文本标记语言的元素,所以支持普通的数字正射影像图操作,又由于挽救(保存的简写)本质上是可扩展标记语言文档,所以也有一种特殊的数字正射影像图操作,大多称之为SVG DOM。当然了,由于目前工业管理学(工业工程)不支持SVG,开发基于工业管理学(工业工程)的挽救(保存的简写)页面需要采用不同的方式。这部分的知识大家其实都很熟悉,下面只是简单的看一下。HTML页面中的DOM操作

  数字正射影像图大家应该很熟悉了,这里先看一个小例子:复制代码代码如下:

  头

  风格

  #svgContainer {

  宽度:400像素

  高度:400像素

  背景色:# a0a0a0

  }

  /风格

  脚本

  函数CreateSVG () {

  var xmlns= http://www。w3。org/2000/SVG ;

  var boxWidth=300

  var boxHeight=300

  var SVG elem=文档。createelementns(xmlns, SVG );

  svgElem.setAttributeNS (null, viewBox , 0 0 框宽 框高);

  svgElem.setAttributeNS (null, width ,框宽);

  svgElem.setAttributeNS (null, height ,框高);

  SVG元素。风格。display= block

  var g=文档。createelementns(xmlns, g );

  SVG元素。appendchild(g);

  g.setAttributeNS (null, transform , matrix(1,0,0,-1,0,300));

  //绘制线性渐变

  var defs=文档。createelementns(xmlns, defs );

  var grad=文档。createelementns(xmlns,线性渐变);

  grad.setAttributeNS (null, id , gradient );

  grad.setAttributeNS (null, x1 , 0% );

  grad.setAttributeNS (null, x2 , 0% );

  grad.setAttributeNS (null, y1 , 100% );

  grad.setAttributeNS (null, y2 , 0% );

  var stop top=文档。createelementns(xmlns, stop );

  stopTop.setAttributeNS (null, offset , 0% );

  stopTop.setAttributeNS (null, stop-color , # ff 0000 );

  毕业生。appendchild(stop top);

  var stop bottom=文档。createelementns(xmlns, stop );

  stopBottom.setAttributeNS (null, offset , 100% );

  stopBottom.setAttributeNS (null, stop-color , # 0000 ff );

  毕业生。appendchild(停止底部);

  defs。appendchild(grad);

  g。appendchild(defs);

  //绘制边框

  var coords=M 0,0 ;

  coords= l 0,300 ;

  coords= l 300,0 ;

  coords= l 0,-300 ;

  coords= l -300,0 ;

  var path=文档。createelementns(xmlns, path );

  path.setAttributeNS (null, stroke , # 000000 );

  path.setAttributeNS (null, stroke-width ,10);

  path.setAttributeNS (null, stroke-linejoin , round );

  path.setAttributeNS (null, d ,coords);

  path.setAttributeNS (null, fill , URL(# gradient));

  path.setAttributeNS (null,不透明度,1.0);

  appendChild(路径);

  var SVG容器=文档。getelementbyid(“SVG容器”);

  SVG容器。appendchild(SVG elem);

  }

  /脚本

  /头

  body onload=CreateSVG()

  div id=svgContainer/div

  /body

  发现了没,与普通的超文本标记语言元素的数字正射影像图操作完全一样:

  选择元素:document.getElementById

  创建元素:document.createElementNS

  创建子元素的另外一种方式:element.createChildNS

  添加元素:node.appendChild

  设置元素的属性:元素。设置属性/元素。设置属性

  除了上面这几个操作,下面的操作和属性也很常见:

  获取元素的属性值:element . getattributes/element . getattribute

  检查元素是否存在某属性:element.hasAttributeNS

  移除元素的某属性:element.removeAttributeNS

  父元素、子元素和兄弟节点:元素。父节点/元素。第一个孩子/孩子。下一个兄弟姐妹

  这些方法这里不再详细介绍了;此外,DOM树的节点结构,对象之间的继承关系也都是差不多的,就不详述了。需要的同学参看后面的数字正射影像图核心对象的文档。

  不过,需要注意的是挽救(保存的简写)本质上是可扩展置标语言文档,所以基本采用的数字正射影像图方法都是带纳秒结尾的方式,来提供相关的命名空间;如果创建元素时已经提供了命名空间,而且没有多个命名空间的问题,那么设置相关属性的时候,也可以选择使用不带纳秒的版本,比如直接使用element.setAttribute设置属性值,但是总的来说,还是强烈推荐使用带纳秒结尾的版本,因为这个版本总是工作正常的,即使是在多命名空间的情况下。SVG DOM 这个与标准的数字正射影像图有哪些不同,我也没找到什么全面的资料,目前只知道对属性的赋值方式是不同的。如果有了解这方面的同学还请吱一声啊。

  上面的例子中,我们使用element.setAttributeNS/element.setAttribute来给属性赋值,在文档对象模型中,可以使用面向对象的方式,通过访问点号来给对象的属性赋值,比如下面是两种方式的对比:

  普通的数字正射影像图方式:复制代码代码如下:

  元素。设置属性(" x "," 10 ");

  元素。设置属性(" y "," 20 ");

  element.setAttribute(width , 100% );

  element.setAttribute(height , 2em );

  而文档对象模型的方式:复制代码代码如下:

  元素。十、基础值。值=10;

  元素。y .基瓦尔。值=20;

  元素。宽度。基地瓦尔。新值指定单位(SVG长度.SVG_LENGTHTYPE_PERCENTAGE,100);

  元素。身高。基地瓦尔。新值指定单位(SVG长度.SVG_LENGTHTYPE_EMS,10);

  数字正射影像图脚本属于传统的脚本,其特征是通过构建"值字符串"来设置各个项。文档对象模型脚本样式的优点是,你不必构建"值字符串",所以性能优于数字正射影像图脚本。嵌入SVG的脚本

  如果要在挽救(保存的简写)内部添加脚本,就需要使用脚本元素,这个前面已经讲过了,除了这一点,基本上与把脚本放到外面的超文本标记语言中是一样的。看一个例子:复制代码代码如下:

  !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www。w3。org/TR/XHTML 1/DTD/XHTML 1-过渡。 DTD

  html xmlns= http://。w3。 org/1999/XHTML

  头

  /头

  身体

  SVG xmlns= http://www。w3。org/2000/SVG xmlns:xlink= http://www。w3。org/1999/xlink width= 300 height= 300

  脚本类型=text/ecmascript

  ![CDATA[

  函数showRectColor() {

  警报(文档。getelementbyid( myBlueRect ).getAttributeNS(null, fill ));

  }

  函数showRectArea(evt) {

  var width=parse float(evt。目标。getattributens(null, width ));

  var height=parse float(evt。目标。getattributens(null, height ));

  警报(矩形区域为:(宽度*高度));

  }

  函数showRootChildrenNr() {

  alert( Nr of Children:文档。文档元素。子节点。长度’);

  }

  ]]

  /脚本

  g id=第一组

  rect id= myBlueRect width= 100 height= 50 x= 40 y= 20 fill= blue onclick= showRectArea(evt)/

  text x= 40 y= 100 onclick= showRectColor()单击此文本以显示矩形颜色10.10/文

  text x=40 y=130 单击矩形以显示矩形区域10.10/文

  text x= 40 y= 160 onclick= showrootchildinnr()单击此文本以显示孩子的数量

  tspan x=40 dy=20 根元素的元素/tspan/text

  /g

  /svg

  /body

  /html在这个例子中,列举了常见的获取DOM对象的方式:

  1.通过document.getElementById或者document.getElementByClassName之类的方法获取对象;

  2.通过document.documentElement或者document.rootElement获取文件对象;

  3.通过事件参数目标事件获取产生事件的对象。这种方式的优点就是不使用编号就可以获取到产生事件的对象。

  其余的脚本基本和普通的数字正射影像图是一样的。实用参考:

  脚本索引:http://msdn。微软。com/zh-cn/library/ff 971910(v=vs . 85).文件

  开发中心:https://开发者。Mozilla。组织/环境/服务

  热门参考:http://www.chinasvg.com/

  官方文档:http://www.w3.org/TR/SVG11/

  数字正射影像图核心对象API:http://参考。站点点。com/JavaScript/Document

  文档对象模型常用属性和方法http://riso.iteye.com/blog/393459:http://riso . iteye . com/blog/393454

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: