James Black 建议使用 canvas 标签,是一个非常好的建议,但它需要一个非 IE 更新的浏览器。或者是吗?感谢 google,您将能够在 IE 中使用 Chrome 渲染器。通过这种方式,您可以使用动态图表定位支持 HTML5 的浏览器(Gecko、Webkit 和 Presto),并要求 IE 用户在 Google 的 Add on 发布后安装它。canvas
由于对所有非 IE 的原生支持,以及谷歌的IE浏览画布插件,它可以跨浏览器工作。由于IE的一些插件SVG
,支持也可以跨浏览器使用。请注意,如果您需要适用于 IE 的 Chrome 渲染器,则不需要其他任何东西。
您可以使用canvas
或svg
制作图表,并且已经有一些库可以这样做。这两种技术都允许您创建动态图,但它们有一些不同的方法。
SVG 画布
-------------------------------------------------- -----------------------------------------
具有场景 DOM(尽管是 SVG DOM)单个 HTML 元素,
渲染脚本驱动
形状交易 像素交易
有点难以与 HTML(不是 XHTML)混合在两者中都表现得像图像
事件处理容易 事件处理困难
我想我会SVG
去做你想做的事,因为向它添加动态标签会很简单,但是很难为伪 3D 散点图创建一个真正灵活的 API。
问题svg
在于,通过尝试制作一种非常灵活的语言,您将拥有一种非常复杂的语言。在这里,您可以看到在两个库中编写的执行相同操作的代码。
SVG
var rect = document.createElementNS(SVG_NS, "rect");
rect.setAttribute("x", "5");
rect.setAttribute("y", "5");
rect.setAttribute("width", "20");
rect.setAttribute("height", "20");
rect.setAttribute("fill", "red");
parent.appendChild(rect);
var poly = document.createElementNS(SVG_NS, "polygon");
poly.setAttribute("fill", "green");
poly.setAttribute("points", "-40,40 0,-40, 40,40");
parent.appendChild(poly);
帆布
with (ctx) {
fillStyle = "red";
fillRect(5, 5, 20, 20);
}
with (ctx) {
fillStyle = "green";
beginPath();
moveTo(-40, 40);
moveTo(0, -40);
moveTo(40, 40);
closePath();
fill();
}