问题标签 [svg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
11328 浏览

cross-browser - 在浏览器中显示矢量图形

我需要在我正在处理的网站中显示一些交互式(附加 DOM 侦听器等和事件处理)矢量图形。W3C 推荐了 SVG,尽管 Internet Explorer 支持仍然无法识别这种格式,这是必须的(对于公共网站)。IE 处理 VML,甚至还有一些 JavaScript 库可以根据浏览器(SVG 与 VML)进行一些类似画布的绘图 - excanvasDojo Toolkit 的 GFX等等。尽管它们都不能从给定的标记中显示 SVG 图像,但这会很好并且可以接受。

所以这个问题实际上由几个部分组成:

  1. 是否有任何跨浏览器 Javascript 库可以显示来自给定标记(不是强制性 SVG)的矢量图形并提供附加到 DOM 事件的可用性?
  2. 如果没有,哪种最流行的嵌入式浏览器技术最适合做这样的任务?我可以从 Flex/Flash、Java 小程序中进行选择。由于 Windows 锁定,Silverlight 不是一个选项。

[编辑]谢谢大家的意见/建议。以下只是我对此事的一些随机笔记/结论:

  • 我需要的交互性级别是能够检测正在显示的矢量图像上的 DOM 事件——鼠标悬停、鼠标悬停、单击等——以及对它们做出反应的能力,比如改变背景颜色、显示对话框等。
  • 坚持使用 SVG 格式的想法非常好,因为它在许多浏览器上都是原生的,除了最流行的浏览器 - IE。在尝试显示动态 SVG 之后,我意识到 IE 版本 7 是最有问题的。由于浏览器不兼容,有太多麻烦。
  • Cake 似乎是一个很棒的 Javascript 框架,尽管我无法获得在 IE7 上运行的示例。
  • Java Applets - 我最喜欢这个想法,因为我可以使用 Apache Batik 库,一个高质量的 SVG 渲染器。但是,Batik 是一个非常大的库,我负担不起部署一个只有几兆字节的小程序。
  • 我决定坚持使用 Flex 选项。我找到了一个不错的矢量图形库Degrafa。它使用自己的标记格式,但是它识别 SVG 路径表示法,因此在我的情况下,使用 XSLT 转换我的 SVG 或仅解析它们将非常容易。

[编辑 2 ] 出现了更多评论。我想澄清一下,“Windows 锁定”是指 Silverlight 通常在 Windows 上运行的情况,更具体地说,是 IE。我怀疑它是否是其他系统上可接受的解决方案(例如 Flash 或 Java Applet)。是的,我毫不怀疑可以在任何系统上启动 Silverlight 应用程序,尽管我担心这对普通用户来说会花费太多精力。

@Akira:您对 IE7 上的那些“SVG 渲染器”有什么问题吗?我总是抛出 Javascript 错误。

0 投票
2 回答
4867 浏览

actionscript-3 - 有没有办法在运行时在 swf 中呈现 svg 数据?

我想在运行时在 swf 中呈现 svg 数据(而不是在 Flex 中 - 不使用 degrafa) - 我将如何去做?

0 投票
5 回答
8388 浏览

javascript - 脚本 SVG

我正在考虑开发一个类似于 stackoverflow 的网站,但答案也可能包括图纸(在这种情况下是示意图)。我想在答案表格中有一个区域,他们可以在不需要特殊插件等的情况下制作这个示意图。

  1. 我们是否已经到了 SVG 已经或应该很快(1-2 年)达到临界质量的地步,以便设计一个以脚本运行 SVG 作为主要功能的网站是合理的(即,需要 Firefox 或其他 SVG/AJAX 兼容的浏览器)?
  2. 学习跨平台 SVG 脚本(可能在 javascript 中)有哪些好的资源?

——亚当·戴维斯

0 投票
2 回答
61034 浏览

xml - 对齐 SVG 中的文本

我正在尝试使用混合行和简短的文本片段(通常是两个或三个单词)来制作 SVG XML 文档。我遇到的主要问题是让文本与线段对齐。

对于水平对齐,我可以text-anchor使用left,middleright。我找不到垂直对齐的等价物;alignment-baseline似乎没有这样做,所以目前我正在dy="0.5ex"用作中心对齐的工具。

是否有适当的方式与文本的垂直中心或顶部对齐?

0 投票
6 回答
119780 浏览

c# - 使用 C# 将 SVG 转换为 PNG

我一直在尝试使用 C# 将 SVG 图像转换为 PNG,而无需编写太多代码。任何人都可以推荐一个库或示例代码来执行此操作吗?

0 投票
7 回答
13575 浏览

javascript - 为SVG + Javascript框架寻求一个好的解决方案

我希望听到其他人使用 SVG + Javascript 框架的经验。

我希望框架处理的事情——DOM 创建、事件处理和最小尺寸。

Jquery SVG 插件 - http://keith-wood.name/svg.html似乎是我能找到的唯一一个。

0 投票
2 回答
405 浏览

xhtml - 将 HTML 与基于 XML 的语言(如 SVG)一起使用的最佳实践是什么?

通过浏览此站点和其他地方,我了解到目前将网站作为 XHTML 服务被认为是有害的。

application/xhtml+xml目前大多数浏览者不支持交付 XHTML 并按原样提供服务,交付 xhtmltext/html至多是我自己的安慰剂,最坏的情况是通常在您最不需要的时候破坏网站的秘诀。

所以我们最终回到了 html 4.01。如果我将我的页面作为 html 4.01 提供,是否可以在页面上使用 SVG 或任何其他基于 XML 的语言?

如果是这样,怎么做?

0 投票
4 回答
3596 浏览

air - Adobe AIR 可以显示 SVG 吗?

我看到 Adob​​e AIR 使用 WebKit 作为其渲染器,并且我看到 WebKit(至少是最新版本)具有一些 SVG 支持。这是否意味着(并且有人专门尝试过)Adobe AIR 应用程序可以在 HTML 页面上呈现 SVG?

0 投票
4 回答
66578 浏览

popup - 如何创建类似 SVG“工具提示”的框?

给定一个现有的有效 SVG 文档,创建“信息弹出窗口”的最佳方法是什么,这样当您悬停或单击某些元素(比如说)时,您会弹出一个带有任意数量(即不仅仅是单行工具提示)的框额外的信息?

这应该至少在 Firefox 中正确显示,并且如果图像被光栅化为位图格式,则它是不可见的。

0 投票
9 回答
19622 浏览

python - PyGame 应用程序中的 SVG 渲染。在 Pygame 2.0 之前,Pygame 不支持 SVG。那你是怎么加载的?

pyGame应用程序中,我想渲染 SVG 中描述的无分辨率 GUI 小部件。

我可以使用什么工具和/或库来实现这个目标?

(我喜欢OCEMP GUI工具包,但它的渲染似乎依赖于位图)