SVG使用示例

标签: svg | 发表时间:2014-04-22 22:40 | 作者:jm1999
出处:http://www.iteye.com

<!DOCTYPE HTML>

<html>

 <head>

  <title> New Document </title>

<meta charset="utf-8" />

 </head>

 

 <body>

  <div id="contains">

  </div>

 

<!--

折线:

<polyline points="0,0 0,20 20,20 20,40 40,40 40,60"

style="fill:white;stroke:red;stroke-width:2"/>

路径:

<path d="M250 150 L150 350 L350 350 Z" />

水平渐变的椭圆:

<defs>

<linearGradient id="orange_red" x1="0%" y1="0%" x2="100%" y2="0%">

<stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1"/>

<stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1"/>

</linearGradient>

</defs>

 

<ellipse cx="200" cy="190" rx="85" ry="55"

style="fill:url(#orange_red)"/>

放射性渐变的椭圆:

<defs>

<radialGradient id="grey_blue" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">

<stop offset="0%" style="stop-color:rgb(200,200,200);stop-opacity:0"/>

<stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity:1"/>

</radialGradient>

</defs>

 

<ellipse cx="230" cy="200" rx="110" ry="100"

style="fill:url(#grey_blue)"/>

 

当用户在圆上点击时,使用js创建一个元素:

<svg width="100%" height="100%" version="1.1"

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

 

<script>

function create_a(evt)

{

var SVGDoc=evt.getTarget().getOwnerDocument();

var txt=SVGDoc.getElementById("txt");

var link=SVGDoc.createElement("a");

var text_node=SVGDoc.createTextNode("LINK");

 

link.setAttributeNS(

"http://www.w3.org/1999/xlink",

"xlink:href",

"http://www.w3schools.com");

 

link.appendChild(text_node);

txt.appendChild(link);

}

</script>

 

<text id="txt" x="10" y="10">Click on the circle to create a ....</text>

<circle cx="20" cy="40" r="1.5em" style="fill:blue" onclick="create_a(evt)"/>

 

</svg>

 

// 更高效的计时器,类似于setTimeout,不会发生丢

requestAnimationFrameID = window.requestAnimationFrame(doAnim); // Continue calling the doAnim() function.

window.cancelAnimationFrame(requestAnimationFrameID)

 

    // handle multiple browsers for requestAnimationFrame()

    window.requestAFrame = (function () {

        return window.requestAnimationFrame ||

                window.webkitRequestAnimationFrame ||

                window.mozRequestAnimationFrame ||

                window.oRequestAnimationFrame ||

                // if all else fails, use setTimeout

                function (callback) {

                    return window.setTimeout(callback, 1000 / 60); // shoot for 60 fps

                };

    })();

 

    // handle multiple browsers for cancelAnimationFrame()

    window.cancelAFrame = (function () {

        return window.cancelAnimationFrame ||

                window.webkitCancelAnimationFrame ||

                window.mozCancelAnimationFrame ||

                window.oCancelAnimationFrame ||

                function (id) {

                    window.clearTimeout(id);

                };

    })();

 

-->

  <script>

  function $(id){

return document.getElementById(id);

  }

  function canvasMap(){

var xmlns = 'http://www.w3.org/2000/svg';

 

// 创建一条线

// <line x1="0" y1="0" x2="300" y2="300" style="stroke:rgb(99,99,99);stroke-width:2"/>

this.createLine = function(options){

return createElement('line', options);

};

 

// 创建组

// <g></g>

this.createGroup = function(options){

return createElement('g', options);

};

 

// 创建矩形

// <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)"/>

this.createRect = function(options){

return createElement('rect', options);

};

 

// 创建圆形

// <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>

this.createCircle = function(options){

return createElement('circle', options);

};

 

// 创建路径

// <path d="M250 150 L150 350 L350 350 Z" />

this.createPath = function(options){

return createElement('path', options);

};

 

// 创建折线

// <polyline points="0,0 0,20 20,20 20,40 40,40 40,60" style="fill:white;stroke:red;stroke-width:2"/>

this.createPolyline = function(options){

return createElement('polyline', options);

};

 

// 创建SVG

// <svg width="500" height="500"></svg>

this.createSVG = function(options){

return createElement('svg', options);

};

 

// 创建三角形

// <polygon points="220,100 300,210 170,250" style="fill:#cccccc;stroke:#000000;stroke-width:1"/>

this.createPolygon = function(options){

return createElement('polygon', options);

};

 

// 创建文本节点

// <text id="TextElement" x="0" y="0" style="font-family:Verdana;font-size:24"> It's SVG!</text>

this.createText = function(options){

return createElement('text', options);

}

 

// 创建元素

function createElement(tag, options){

var node = null;

node = document.createElementNS(xmlns, tag);

for(var op in options){

node.setAttribute(op, options[op]);

}

return node;

}

  }

 

  var canvas = new canvasMap();

  var root = canvas.createSVG({width:500, height: 500});

  $('contains').appendChild(root);

  var rect = canvas.createRect({'x':5,'y':5,'rx':5,'ry':5,'width':100,'height':100,'style':'fill:rgb(0,0,255);stroke-width:2;stroke:rgb(0,0,0)'});

  root.appendChild(rect);

  var circle = canvas.createCircle({'cx':100,'cy':100,'r':20,'style':'fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)'});

  root.appendChild(circle);

  var polygon = canvas.createPolygon({'points':'200,250 210,280 220,250','style':'fill;#ccc;stroke:#000;stroke-width:2'});

  root.appendChild(polygon);

  </script>

 </body>

</html>

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [svg] 推荐:

了解SVG

- - CSDN博客推荐文章
语言: JavaScript,HTML, SVG.         SVG- 可缩放矢量图形 ,是一个XML风格标记驱动的矢量图形的浏览器渲染引擎. 除了IE 9.0和Android V3之前版本外的所有浏览器都支持SVG. Canvas也有同样的支持情况,所以问题往往表现为:我们应该使用哪种方案.

SVG的用法

- - WebHek
先让大家感受一下用SVG技术制作的简单动画:. 如果你看不到这个演示,说明你的浏览器不支持SVG,请使用最新版的谷歌浏览器或火狐浏览器. 《 如何画出一条会动的线》这篇文章专门介绍了上面这SVG动画是如何简单的实现的. SVG是 Scalable Vector Graphics三个单词的首字母缩写.

SVG使用示例

- - JavaScript - Web前端 - ITeye博客
当用户在圆上点击时,使用js创建一个元素:. // 更高效的计时器,类似于setTimeout,不会发生丢. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

SVG动画入门

- - Web前端 - ITeye博客
今天我们继续来学习SVG动画方面的知识. 一听到动画效果,你可能就觉的头都打啦. 不要担心,SVG本身提供的动画属性非常容易使用,今天我们就来学习一下基础的知识. SVG中提供了 animate的方法来制作动画属性:. 在上面的代码中,我们在元素里面添加了一个 的标签. 包含了下面的一些属性.

理解SVG的viewport,viewBox,preserveAspectRatio

- - Web前端 - ITeye博客
        一个svg,设置了viewBox之后,viewBox的长宽值如果都小于svg的viewport的长宽值,那么结果一定是放大;但是viewBox的长宽值一旦有一个值大于vewport之后,最后的实际效果就不是放大,而是缩小了.         因为viewBox的目的是要自己设置的长宽范围填满viewport.

【转载】SVG是什么?SVG有什么用途?

- - HTML5研究小组
随着网络上信息数据的大量涌现,如何正确显示和出版是有效传输、接收和利用它们的基础. 图形、图像是信息数据可视化的主要方式. 但现有的图形、图像格式存在着缺陷:非开放式,显示和印刷质量及适应性差,难以创建Web上图文信息的个性化定制、交互式以及实时动态方面的应用等. SVG正是在这样的背景下诞生的. SVG(Scalable Vector Graphics,可伸缩性矢量图形)是由万维网联盟(W3C)推出的基于XML编码的开放式图形、图像标准.

【转载】比较html5、GML、SVG、VML

- - HTML5研究小组
web图形方案比较 html5、 GML、 SVG、 VML. GML、SVG和VML都是基于XML的可用来描述矢量图形的标记语言,都是XML词表,它们的语法并不难理解,但它们都有各自不同的用途和特点,下面简单介绍一下. 是基于XML的空间信息编码标准,由OpenGIS Consortium (OGC)提出,得到了许多公司的大力支持,如Oracle、Galdos、MapInfo、CubeWerx等.

jQuery矢量SVG地图插件JVectorMap

- - HTML5资源教程
JVectorMap是一款基于jQuery的矢量地图插件,它是基于SVG结构的,和其他jQuery地图插件不同的是,jVectorMap是矢量地图,但是它同样支持地图缩放和地图平面移动等相应的功能. 由于JVectorMap是基于jQuery的,所以支持大部分主流的浏览器,应用也相当广泛.

未来必热:SVG Sprite技术介绍

- - 张鑫旭-鑫空间-鑫生活
本文地址: http://www.zhangxinxu.com/wordpress/?p=4264. 这里所说的Sprite技术,没错,类似于CSS中的Sprite技术. 图标图形整合在一起,实际呈现的时候准确显示特定图标. 另,本文图片甚多,爪机党继续浏览需慎重. 二、SVG Sprite与symbol元素.

五项Web技术:WebGL和SVG名列其中

- - 脚本爱好者
  Bruce Lowson 是 Opera 开放 web 标准的撰写人员之一,一些没有包含在 HTML5 之内的浏览器技术十分奇妙,包括 WebGL 和 SVG,作者希望通过本文与共同爱好者们分享.   别担心,咱们不去管那些啦,因为有些还远远没有完成呢,在浏览器中见到它们还要等一阵子. 然而,其它已经在浏览器中,或者距离您很近,或者马上就要出现.