关于SVG文件在Firefox中正确显示的研究

最近因为做SVG方面的开发工作,所以研究起SVG的一些东西。

手头上使用的资料是SVG官方的文档,《SVG essentials》,《基于XMLSVG应用指南》。

网上说,firefox,opera,都可以直接支持SVG,当然安装了SVG插件的IE也行。

马上开始行动,代码之前,了无秘密。 写一个最简单的SVG文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg    width="1024"    height="768">     <rect        style="opacity:1;fill:#00ff00"        id="rect2160"        width="540"        height="511.42856"        x="42.857143"        y="158.07646" /> </svg>

使用安装了Adobe SVGViewerdIE浏览器打开,可以正常显示,如下图:

再使用firefox打开,不行,不可以正常显示,firefox把它当作xml文件来显示了,如下图:

 

上网查资料,网上都说:firefox可以直接支持SVG,具体怎么支持SVG,都没提到。而且,好像没人遇到我这样的问题。是不是其他人见到别人说支持,也就人云亦云,说支持,而自己没去检验过。关于这点不可考究。

既然遇到问题,就解决它。首先我找了其他SVG的编辑软件来看看。首先使用开源的Inkspace软件。用它编辑了一个SVG文件,然后用firefox打开,可以正常显示。这证明了,friefox是可以正常支持SVG的。具体为什么,继续研究。

  我对比了Inkspace生成的文件源代码和我写的SVG文件源代码,发现Inkspace 生成的文件里面多了一行东西:

xmlns="http://www.w3.org/2000/svg"

 

我把这行代码加入到我的SVG文件中,编程下面的样子:

?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg

   width="1024"

   height="768" xmlns="http://www.w3.org/2000/svg">

    <rect

       style="opacity:1;fill:#00ff00"

       id="rect2160"

       width="540"

       height="511.42856"

       x="42.857143"

       y="158.07646" />

</svg>

 

保存后再用Firefox打开,OK,这次可以正常显示了,如下图:

做技术,我们要知其因。为什么加上那一行代码以后就可以正常显示了呢?

查资料

我在SVG essentials》查到这么一段:

SVG uses the URI http://www.w3.org/2000/svg for its namespace. The URI is just an

identifier — opening that page in a Web browser reveals some links to the SVG, XML

1.0, and Namespaces in XML specifications. Programs processing documents with

multiple vocabularies can use the namespaces to figure out which vocabulary they are

handling at any given point in a document.

SVG applies the namespace in the root element of SVG documents:

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">

....

</svg>

大意是说:SVG使用http://www.w3.org/2000/svg这个链接来标识文件是SVG的命名空间,这个链接是一个标志而已,用来告诉打开文件的软件:这个文件是SVG文件,而不是把它当成XML文件打开。另外,如果要在SVG加入图片的链接,还要加上这一句,xmlns:xlink="http://www.w3.org/1999/xlink"。Opera好像不支持图片的链接。而firefox和Opera都好像不支持中文文字的字体的各种参数的设置。哪位大虾知道的麻烦告诉我。

 

PS:该文章是我原创的,转走的记得标明出处。

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值