我最近一直都在做这个东西 -- Scalable Vector Graphics(可缩放矢量图形).
简单点来说, 就是一种用文本(基于XML)描述矢量图形的东西. 研究了它的规范和一些教程, 发现还比较好用, 至少对我来说, 比HTML好用.
SVG可以用来描述3种对象: 矢量图形,文本,还有传统的象素图片(例如jpg之类的, 当然是include进去的). 其中矢量图形包括像线段,矩形,圆形,椭圆,多边形,还有贝塞尔曲线(这个太棒了). 目前我还处在熟悉和学习的阶段, 但是之后要做的工作应该就是:使用其他的语言(比如Oracle的PL/SQL)根据数据库中的数据生成SVG格式的报表. 目前看来, 这个工作对于我来说, 挑战不在SVG, 因为基本上已经熟悉了, 反而是在PL/SQL这边. 不过也是不用过分担心的, 反正我学什么都快......
SVG令我很担心的是在浏览这个环节上. 目前能够浏览SVG格式的图象的浏览器有一下几个: IE6 + Adobe SVG Viewer , IE7 , firefox , Opera , 还有一个Java的开源项目, 叫Batik, 也是专门做SVG解析的, 也有一个Viewer(当然也可以利用Batik开发自己的SVG应用). 但是, 目前各个浏览器/浏览工具的实现有很多的不同, 可以说到目前为止没有一个让我感觉是"最好"的, 都有这样那样的问题(IE7没试过, 不过应该会秉承IE一贯的"不严谨解析"风格). 这其中, 完成度最高的反而是IE6 + Adobe插件. 虽然的确解析的非常不严谨(XML验证都通不过的文件居然能"正确的"显示出来), 但是像动画啊, onresize啊这些东西都实现了. 在没办法的情况下目前只能以这个东西为标准来调试我的练习作品. firefox呢, 本来以为mozilla是"规范之王"的, 但是出了两个问题让我很是失望: 一个就是还没支持动画(虽然我目前还用不到), 另一个就是在改变窗口大小的时候没有触发onresize事件. Opera打一开始就是拿它来做对比的, 没指望我们的客户都去装个这, 何况也有一些小的问题, 想不起来了. Batik就是Batik, Apache的项目就是毫不含糊啊, SVG解析和Javascript解析都严格的一塌糊涂, 弄的我老是去查JS基础的书, 看看到底"规范"的写法应该是怎么样......
那天拿了我的第一个成型一点的作品给老外看了. 他当时提出一个问题就是打印的问题. 说实话我之前完全没有考虑过打印的问题. 但是老外说, 打印是重要(print is important直译). 但是搞到最后, 试了之前提到的所有浏览器(包括IE7, 老外自己机器上有), 都没有很好的解决这个问题. 讨论的结论是: 后面真正开始做的时候, 要分别生成两种SVG: 一种是给人在浏览器里看的, 带SVG滚动条的那种; 另一种是可打印版本, 在宽和高的尺寸上要为打印考虑. 目前觉得实现应该不难, 但是可以预见, 轮到自己真正着手做这个事情的时候, 还是会叫苦不迭滴~
(以下为广告)
SVG -- 新一代矢量图形描述语言, 真的很好用!
(广告结束)
真的, 是很好用.