代码之家  ›  专栏  ›  技术社区  ›  doug

在HTML中放置SVG内容的最佳方法

  •  22
  • doug  · 技术社区  · 14 年前

    根据我的研究,我了解在HTML中放置SVG文件有三种方法:

    使用 嵌入 :

    <embed src="plot1.svg" width="500" height="320" type="image/svg+xml" />
    


    使用 对象 :

    <object data="plot1.svg" width="500" height="320" type="image/svg+xml" />
    


    使用 伊夫拉姆 :

    <iframe src="plot1.svg" width="500" height="320"> </iframe>
    


    我在一个测试平台(Django内置的dev服务器,在firefox 3.6中呈现页面)上对这三个工具进行了实验。在这个明显无菌的环境下,我没有注意到这三种方法——W/R/T性能或分辨率之间的任何区别。

    我的问题是,其中一个是否比另外两个更好,如果是的话,哪一个更好。答案当然可能取决于事实,我试图将其限制在相关的范围内:

    我们经常在我们的网站上显示数据(例如,时间序列),通常是为了响应某些用户操作而创建的;基于该用户操作,对数据库进行调用,对返回的数据进行压缩并发送到绘图引擎,该引擎将呈现静态图像,然后将其嵌入到页面中Y标准材料。

    这很好,但我想在这些图表中添加一些交互功能(例如,工具提示、超链接轴标签、突出显示绘图中的一组点)。有些图表相当复杂(例如,多面板调节),我没有找到包含这些功能的javascript图表库。最后,我决定使用相同的绘图库(R中的格子),但在SVG中呈现每个图表,然后在后处理步骤中添加用户交互功能,这基本上由直接操作XML的javascript函数组成。

    2 回复  |  直到 9 年前
        1
  •  12
  •   bobince    14 年前

    <embed> 我通常会避免。它在HTML4中已被弃用,不允许正确的回退内容,并且在IE中有一系列问题。

    <object> 将允许您在不支持SVG的情况下为浏览器包含回退HTML内容。 <iframe> 将返回提示您下载.svg文件。其中哪一个最好,可能取决于应用程序。

    对于现代浏览器(包括9版的IE),另一种选择是将网页作为 application/xhtml+html 并在页面中包含SVG元素。

        2
  •  11
  •   JALF    10 年前

    对我来说最好的方法是

    <svg id="circle" height="60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
      <image x="0" y="0" height="60" width="60"  xlink:href="huge-red-circle.svg" />
    </svg>
    

    You can see the example here

    资料来源: http://edutechwiki.unige.ch/en/Using_SVG_with_HTML5_tutorial