我如何使用JavaScript创建SVG图形?
是否所有的浏览器都支持SVG?
我如何使用JavaScript创建SVG图形?
是否所有的浏览器都支持SVG?
看看这个名单在维基百科上关于该浏览器支持SVG。 它还提供在脚注中的更多细节。 火狐例如支持基本的SVG,但目前最缺乏的动画功能。
有关如何使用JavaScript来创建SVG对象的讲解,可以发现这里 :
var svgns = "http://www.w3.org/2000/svg";
var svgDocument = evt.target.ownerDocument;
var shape = svgDocument.createElementNS(svgns, "circle");
shape.setAttributeNS(null, "cx", 25);
shape.setAttributeNS(null, "cy", 25);
shape.setAttributeNS(null, "r", 20);
shape.setAttributeNS(null, "fill", "green");
IE需要一个插件来显示SVG。 最常见的是可供下载的Adobe的一个; 但是,Adobe不再支持或开发它。 火狐,歌剧,铬,Safari浏览器,都将显示基本SVG罚款,但会遇到怪癖如果使用先进的功能,如支持是不完整的。 Firefox已经对声明性动画的支持。
SVG元素可以用JavaScript如下创建:
// "circle" may be any tag name
var shape = document.createElementNS("http://www.w3.org/2000/svg", "circle");
// Set any attributes as desired
shape.setAttribute("cx", 25);
shape.setAttribute("cy", 25);
shape.setAttribute("r", 20);
shape.setAttribute("fill", "green");
// Add to a parent node; document.documentElement should be the root svg element.
// Acquiring a parent element with document.getElementById() would be safest.
document.documentElement.appendChild(shape);
该SVG规范描述了所有SVG元素的DOM接口。 例如,SVGCircleElement,这是上面创建,有cx
, cy
,和r
为中心点和半径,这可以直接访问属性。 这些是SVGAnimatedLength属性,其具有baseVal
属性为正常值,和animVal
用于动画值属性。 在目前的浏览器不支持可靠的animVal
财产。 baseVal
是SVGLength,其值由设定value
属性。
因此,对于脚本动画,人们也可以设置这些DOM属性来控制SVG。 下面的代码应相当于上面的代码:
var shape = document.createElementNS("http://www.w3.org/2000/svg", "circle");
shape.cx.baseVal.value = 25;
shape.cy.baseVal.value = 25;
shape.r.baseVal.value = 20;
shape.setAttribute("fill", "green");
document.documentElement.appendChild(shape);
要做到这一点跨浏览器,我强烈建议RaphaelJS 。 它具有良好的API的地狱,确实VML在IE中,无法理解SVG。
除了IE浏览器支持SVG的所有现代浏览器
下面是就如何与使用JavaScript SVG工作步指南提供了一步的教程:
SVG脚本使用JavaScript第1部分:简单的圆形
像Boldewyn已经表示,如果你想
要做到这一点跨浏览器,我强烈建议RaphaelJS: rapaheljs.com
虽然现在我觉得图书馆的规模过大。 它具有强大的许多功能其中一些你可能并不需要。
我喜欢jQuery的SVG库非常多。 它帮助我每次我需要SVG操作时间。 这真的方便与从JavaScript SVG的工作。
我发现没有遵守这样的答案创建圈子并添加到SVG试试这个:
var svgns = "http://www.w3.org/2000/svg"; var svg = document.getElementById('svg'); var shape = document.createElementNS(svgns, "circle"); shape.setAttributeNS(null, "cx", 25); shape.setAttributeNS(null, "cy", 25); shape.setAttributeNS(null, "r", 20); shape.setAttributeNS(null, "fill", "green"); svg.appendChild(shape);
<svg id="svg" width="100" height="100"></svg>
不,不是所有的浏览器都支持SVG。 我相信,IE需要一个插件来使用它们。 由于SVG只是一个xml文件,JavaScript可以创建它们。 我不能确定其加载到浏览器虽然。 我还没有试过。
此链接有关于JavaScript和SVG的信息:
http://srufaculty.sru.edu/david.dailey/svg/SVGAnimations.htm
有一个jQuery插件,可以让你通过JavaScript操纵SVG:
http://plugins.jquery.com/project/svg
从它的介绍:
原生支持在Firefox,Opera和Safari浏览器,并通过在IE中的Adobe SVG浏览器或RENESIS播放器,SVG可以显示你的网页中的图形。 现在,您可以轻松地从你的JavaScript代码驱动SVG画布。
您可以使用d3.js. 这是很容易使用,功能强大。
D3.js
是一个JavaScript库操纵基于数据文件。 D3可以帮助你使用HTML,SVG和CSS数据带来的生活。
有关于使用JavaScript SVG图形多个库,如:捕捉,拉斐尔,D3。 或者你也可以直接连接与普通的JavaScript的SVG。
目前所有浏览器最新版本支持SVG 1.1版。 SVG 2.0是工作草案,并过早地使用它。
本文介绍如何使用SVG使用Javascript互动,具有一定的参考,为浏览器支持链接。 与SVG接口
IE 9现在支持基本SVG 1.1。 它是关于时间,虽然IE9仍远远落后于谷歌Chrome和Firefox支持SVG。
http://msdn.microsoft.com/en-us/ie/hh410107.aspx
所以,如果你想通过JS一块来构建SVG的东西一块,然后不只是使用createElement()
这些都不会画,用这个来代替:
var ci = document.createElementNS("http://www.w3.org/2000/svg", "circle");