公司里面的产品用图表的地方也比较多,作为平台维护的我,收到几次需求提的建议中包括图表美化的功能,要炫,要3d,立体感,功能要强大等到;平台现有控件都是用的一个开源flash,我对flash虽然会一点但本身没什么兴趣,要美化我估计成本不划算,所以平时也留意观察一些做的好的图表插件,能够找到功能合适的,开源的,免费的那就巴适了。

最近浏览网页时无意间看到一个外表简洁但效果还炫的统计图表,它支持各种鼠标事件,还有动画,起初以为是用flash做的,用浏览器自带的web开发工具查看了一下dom结构,发现一些陌生的标签,代表之一就是svg,我心生好奇,通过查资料原来是用svg一种可缩放的矢量图形技术实现的。但这么技术已经早在2003年就已经成为w3c标准了,我感叹的同时,毕竟是我不会的,就可以学习,还是咬着牙把介绍看完吧。以下都是些口水话,w3c官网上也有介绍的。。

什么是SVG?

  SVG 指可伸缩矢量图形 (Scalable Vector Graphics SVG 用来定义用于网络的基于矢量的图形;SVG 使用 XML 格式定义图形;SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失;SVG 是万维网联盟的标准;SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体。SVG 的历史和优势 在 2003 年一月,SVG 1.1 被确立为 W3C 标准与其他图像格式相比,使用 SVG 的优势在于 SVG 可被非常多的工具读取和修改(比如记事本 SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强 SVG 是可伸缩的 SVG 图像可在任何的分辨率下被高质量地打印 SVG 可在图像质量不下降的情况下被放大 SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图) SVG 可以与 Java 技术一起运行 SVG 是开放的标准 SVG 文件是纯粹的 XML。

SVN能做什么   

  先看这个腾讯做的统计图表:http://v2.ta.qq.com/summary/index?sId=7835836#!1-0

  画矩形、 圆形、椭圆、线条、多边形、折线、路径、滤镜、渐变、动画等等

如何使用SVG

1、使用 <embed> 标签

<embed> 标签被所有主流的浏览器支持,并允许使用脚本。

注释:当在 HTML 页面中嵌入 SVG 时使用 <embed> 标签是 Adobe SVG Viewer 推荐的方法!然而,如果需要创建合法的 XHTML,就不能使用 <embed>。任何 HTML 规范中都没有 <embed> 标签。

语法:

<embed src="rect.svg" width="300" height="100"
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" />

注释:pluginspage 属性指向下载插件的 URL。

2、使用 <object> 标签

<object> 标签是 HTML 4 的标准标签,被所有较新的浏览器支持。它的缺点是不允许使用脚本。

注释:假如您安装了最新版本的 Adobe SVG Viewer,那么当使用 <object> 标签时 SVG 文件无法工作(至少不能在 IE 中工作)!

语法:

<object data="rect.svg" width="300" height="100"
type="image/svg+xml"
codebase="http://www.adobe.com/svg/viewer/install/" />

注释:codebase 属性指向下载插件的 URL。

3、使用 <iframe> 标签

<iframe> 标签可工作在大部分的浏览器中。

语法:

<iframe src="rect.svg" width="300" height="100">
</iframe>

以上内容摘自w3c

  SVG的主要用途,通过下面这篇过去的文章可以看出,它主要用与一些图形图像处理的系统中,比如GIS 地理信息系统(GeographicInformationSystem或Geo-Informationsystem,GIS),文章个地址:http://blog.csdn.net/feisy/article/details/2458835

个人觉得开发应用没必要用SVG开发,要是兴趣的话建议只是一个了解,深入学习就可以打消这个念头额。 如果想开发基于web的图形方面的东西,着眼现在的话还是flash,更何况现在都有HTML5了,其中测canvas功能无比强大。svg的使用在ie下还需要安装插件才能使用,虽然这次我测试没有发现太大的兼容性,同时安装多个插件会出问题。最常用的adobe的插件不支持鼠标形状的变化,而且在ie浏览器中没有滚动条,当svg图形较大或在较低分辨率下你需要自己用svg绘制滚动条,拖动滚动条的事件等也要自己写。即使是支持svg的浏览器也不是完全支持的。比如svg中用于文本换行的指令在火狐中无效。svg的发展似乎已经停顿,很多年没有再出新的东西。也许是因为现在的都不能被支持,更新也就没意义了。相关的开发文档和技术介绍也少之又少。不浪费时间和经历了。但学习的过程是快乐的。。

 

svg技术(可缩放矢量图形)介绍的更多相关文章

  1. HTML5: SVG (可缩放矢量图形)

    ylbtech-HTML5: SVG (可缩放矢量图形) 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 1. ...

  2. SVG(可缩放矢量图形)

        SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式.SVG是W3C("World Wide W ...

  3. [Swift通天遁地]八、媒体与动画-(5)使用开源类库绘制文字、图形、图像、图表、SVG(可缩放矢量图形)

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. SVG :可缩放矢量图形(Scalable Vector Graphics)。

    SVG 意为可缩放矢量图形(Scalable Vector Graphics). SVG 使用 XML 格式定义图像. SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失 SVG 使用 XML ...

  5. svg可缩放矢量图形

    可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. <svg xmlns="http://www.w ...

  6. HTML5 可缩放矢量图形(2)—SVG基础

    参考文档——权威 SVG常识 渲染顺序——后来居上:越后面的元素越可见 单位——可以指定,也可以不指定,默认px,其他:em.%.cm.mm... SVG画布——绘制图像的区域,无限大 SVG视窗—— ...

  7. Lucene.net站内搜索—4、搜索引擎第一版技术储备(简单介绍Log4Net、生产者消费者模式)

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  8. ar技术序章-SDK介绍和选择

    转自: http://blog.csdn.net/kun1234567/article/details/10402535 ar技术序章-SDK介绍和选择 分类: Augmented Reality20 ...

  9. 【重点突破】——SVG技术动态随机绘制圆形

    一.引言 在学习Canvas绘图技术时,做的是随机验证码的例子,在学习SVG绘图技术时,同样也有一个随机绘制的例子——动态随机绘制圆形.这个练习,即综合了多种SVG技术的知识点,又很具有艺术感,随机生 ...

  10. 【转帖】网卡多队列技术与RSS功能介绍

    网卡多队列技术与RSS功能介绍 2017年02月08日 15:44:37 Murphy_0806 阅读数 10665 标签: rss网卡dpdk 更多 个人分类: DPDK https://blog. ...

随机推荐

  1. Android数据库升级

    随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新 ...

  2. 浅析基本AI五子棋算法

    五子棋是所有棋类博弈中比较简单的了,这里介绍的也只是一种非常基本的AI策略.其实,包括之前的AI贪吃蛇,感觉这两个AI其实体现的都是一种建模思想,把一个现实中的问题模型化,抽象化,得到其一般特征,再设 ...

  3. php常用函数(持续更新)

    每一种编程语言在用的过程中都会发现有时候要一种特定需求的功能函数,结果没有内置这样的函数,这个时候就需要自己根据已有函数编写尽可能简单的函数,下面是我在做php相关工作时积累下的函数,会持续更新,您要 ...

  4. Codeforces 711E ZS and The Birthday Paradox

    传送门 time limit per test 2 seconds memory limit per test 256 megabytes input standard input output st ...

  5. oracle--知识点汇总1

    同义词: -- e是scott.emp表的临时别名 select e.* from (select * from scott.emp) e; --创建私有同义词 create synonym myem ...

  6. idea community 配置已有的scala工程

  7. CentOS编译安装NodeJS+Express

    NodeJS是基于Chrome’s Javascript runtime,也就是Google V8引擎执行Javascript的快速构建网络服务及应用的平台,其优点有: 在CentOS编译安装Node ...

  8. redis哨兵配置

    redis哨兵配置主从   redis哨兵的启动和redis实例的启动没有关系.所以可以在任何机器上启动redis哨兵.至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点. 配置步骤: 1.在 ...

  9. 转换流——OutputStreamWriter类与InputStreamReader类

    字节流和字符流的转换类 OutputStreamWriter:是Writer的子类,将输出的字符流变成字节流 InputStreamReader:是Reader的子类,将输入的字节流变成字符流 将字节 ...

  10. 【ZeroClipboard is not defined】的解决方法

    参考:http://www.cnblogs.com/jfw10973/p/3921899.html https://github.com/zeroclipboard/zeroclipboard 近期该 ...