SVG 嵌入到HTML页面

2019-05-06 23:44|来源: 网路

SVG 在 HTML 页面


SVG 文件可通过以下标签嵌入 HTML 文档:<embed>、<object> 或者 <iframe>。

SVG的代码可以直接嵌入到HTML页面中,或您可以直接链接到SVG文件。


使用 <embed> 标签

<embed>:

  • 优势:所有主要浏览器都支持,并允许使用脚本

  • 缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)

语法:

<embed src="circle1.svg" type="image/svg+xml" />

结果:


使用 <object> 标签

<object>:

  • 优势:所有主要浏览器都支持,并支持HTML4,XHTML和HTML5标准

  • 缺点:不允许使用脚本。

语法:

<object data="circle1.svg" type="image/svg+xml"></object>

结果:


使用 <iframe> 标签

<iframe>:

  • 优势:所有主要浏览器都支持,并允许使用脚本

  • 缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)

语法:

<iframe src="circle1.svg"></iframe>

结果:


直接在HTML嵌入SVG代码

在Firefox、Internet Explorer9、谷歌Chrome和Safari中,你可以直接在HTML嵌入SVG代码。

注意:SVG不能直接嵌入到Opera。

实例

<html>
<body>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="100" cy="50" r="40" stroke="black"
  stroke-width="2" fill="red"/>
</svg>

</body>
</html>


运行结果

1.png


链接到SVG文件

您还可以用<a>标签链接到一个SVG文件:链接到SVG文件

您还可以用<a>标签链接到一个SVG文件:

<a href="circle1.svg">View SVG file</a>


相关问答

更多
  • 需要牢记的一点是,SVG文档正在用XML文档讨论SVG中的XHTML。 您没有使用XML,而是使用HTML。 这是HTML解析器的一个功能,它以您看到的方式合并主体标签。 如果您使用的是XML解析器,则不会发生该合并。 要实现这一点,您需要使用application/xhtml+xml内容类型来提供文档。 如果你这样做了,那么你需要修复其他问题,比如为你的html元素添加一个xmlns="http://www.w3.org/1999/xhtml"属性。 遵循robertc的建议要容易得多。 One thin ...
  • 是的,使用元素,请参阅这个问题的一些例子。 或者,如果您有一个html5文档,您还可以使用CSS定位和z-index来将html的部分显示在您想要放置在svg顶部的位置。 如果你这样做,你不需要嵌套svg片段内的html。 这将使您在我的经验中跨浏览器最一致的行为。 Yes, with the element, see this question for some examples. Alternatively, if you have an h ...
  • 使用image元素并引用您的SVG文件。 为了好玩,请将以下内容保存为recursion.svg :
    看起来像是一个缺陷,具体取决于浏览器缩放级别。 提出了一个问题http://code.google.com/p/chromium/issues/detail?id=81995 seems like a defect, depending on the browser zoom level. Raised an issue http://code.google.com/p/chromium/issues/detail?id=81995
  • getElementsByTagName函数返回NodeList ,而不是元素。 尝试: SVGRoot = document.getElementsByTagName("svg")[0]; The getElementsByTagName function returns a NodeList, not an element. Try: SVGRoot = document.getElementsByTagName("svg")[0];
  • 你可以使用xul-overlays: 1)在xul文件的顶部声明叠加层: 2)在xul文件中定义一个空容器svg元素,并为其分配与包含文件中的主svg元素相同的id。 3)记得为svg部分使用一个单独的命名空间(参见上面的svg:svg)并声明它。
    配置JEditorPane以将JSVGCanvas画布用于SVG。 要实现这一目标,您需要一个专家HTMLEditorKit 。 这是HTLMEditorKit的HTLMEditorKit 。 package org.pscode.ui.applet.appleteer; import java.awt.Component; import java.awt.Dimension; // placeholder component import javax.swing.JButton; import ja ...
  • 您的代码有一些问题。 一个是createAttributeNode()调用。 另一个是document.content引用。 此外还有奇怪的颜色值“centreColour”。 我把一个工作小提琴放在一起。 希望它可以帮助您在代码中使用。 在这里演示 There are a few things wrong with your code. One is the createAttributeNode() calls. Another is the document.content reference. Pl ...
  • SVG文档片段由'svg'元素中包含的任意数量的SVG元素组成。 资料来源: http : //www.w3.org/TR/SVG/struct.html#NewDocument 基本上: An SVG document fragment consists of any number of SVG elements contained within an ‘svg’ element ...
  • 解决此问题的一种方法是通过更改svg文件(将begin =“indefinite”添加到任何自动启动的动画)来使动画无法自动启动。 然后,可以通过调用beginElement()来触发要触发的动画元素来触发这些动画。 如果你有很多这样的元素,那么使用pauseAnimations()可能更容易。 然而,使用元素,你无法启动动画,因为没有任何事件会被输入svg本身,所以这不会在那里工作。 在这种情况下也会禁用脚本,因此您也无法以这种方式触发或阻止动画。 使用