创建使用JavaScript SVG图形?创建使用JavaScript SVG图形?(Creatin

2019-05-12 21:37发布

我如何使用JavaScript创建SVG图形?

是否所有的浏览器都支持SVG?

Answer 1:

看看这个名单在维基百科上关于该浏览器支持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"); 


Answer 2:

这个答案是从2009年。

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,这是上面创建,有cxcy ,和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);


Answer 3:

要做到这一点跨浏览器,我强烈建议RaphaelJS 。 它具有良好的API的地狱,确实VML在IE中,无法理解SVG。



Answer 4:

除了IE浏览器支持SVG的所有现代浏览器

下面是就如何与使用JavaScript SVG工作步指南提供了一步的教程:

SVG脚本使用JavaScript第1部分:简单的圆形

像Boldewyn已经表示,如果你想

要做到这一点跨浏览器,我强烈建议RaphaelJS: rapaheljs.com

虽然现在我觉得图书馆的规模过大。 它具有强大的许多功能其中一些你可能并不需要。



Answer 5:

我喜欢jQuery的SVG库非常多。 它帮助我每次我需要SVG操作时间。 这真的方便与从JavaScript SVG的工作。



Answer 6:

我发现没有遵守这样的答案创建圈子并添加到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> 



Answer 7:

不,不是所有的浏览器都支持SVG。 我相信,IE需要一个插件来使用它们。 由于SVG只是一个xml文件,JavaScript可以创建它们。 我不能确定其加载到浏览器虽然。 我还没有试过。

此链接有关于JavaScript和SVG的信息:

http://srufaculty.sru.edu/david.dailey/svg/SVGAnimations.htm



Answer 8:

有一个jQuery插件,可以让你通过JavaScript操纵SVG:

http://plugins.jquery.com/project/svg

从它的介绍:

原生支持在Firefox,Opera和Safari浏览器,并通过在IE中的Adobe SVG浏览器或RENESIS播放器,SVG可以显示你的网页中的图形。 现在,您可以轻松地从你的JavaScript代码驱动SVG画布。



Answer 9:

您可以使用d3.js. 这是很容易使用,功能强大。

D3.js是一个JavaScript库操纵基于数据文件。 D3可以帮助你使用HTML,SVG和CSS数据带来的生活。



Answer 10:

有关于使用JavaScript SVG图形多个库,如:捕捉,拉斐尔,D3。 或者你也可以直接连接与普通的JavaScript的SVG。

目前所有浏览器最新版本支持SVG 1.1版。 SVG 2.0是工作草案,并过早地使用它。

本文介绍如何使用SVG使用Javascript互动,具有一定的参考,为浏览器支持链接。 与SVG接口



Answer 11:

IE 9现在支持基本SVG 1.1。 它是关于时间,虽然IE9仍远远落后于谷歌Chrome和Firefox支持SVG。

http://msdn.microsoft.com/en-us/ie/hh410107.aspx



Answer 12:

所以,如果你想通过JS一块来构建SVG的东西一块,然后不只是使用createElement()这些都不会画,用这个来代替:

var ci = document.createElementNS("http://www.w3.org/2000/svg", "circle");


文章来源: Creating SVG graphics using Javascript?