网站地图    收藏   

主页 > 前端 > javascript >

如何为您的网站在Canvas和SVG之间做出选择

来源:未知    时间:2015-04-02 12:03 作者:xxadmin 阅读:

[导读] 作者:Patrick Dengler,高级项目经理,Internet Explorer Canvas 和 SVG 是 Internet Explorer 9 中推出的两个让人激动不已的图形特性,并且是可硬件加速的。这些技术可用于解决现代 web 上与图形有...

作者:Patrick Dengler,高级项目经理,Internet Explorer

Canvas 和 SVG 是 Internet Explorer 9 中推出的两个让人激动不已的图形特性,并且是可硬件加速的。这些技术可用于解决现代 web 上与图形有关的各种问题。由于 Canvas 更让人激动不已,人们开始遗忘 SVG,然而在很多情况下,SVG 反而是更好的选择。我将在本文中介绍何时选择 Canvas、SVG 或结合使用两者的一些想法。

Canvas和SVG概述

下面从较高的层面介绍 Canvas 和 SVG,旨在讨论如何在这两种矢量图形技术之间做出选择。

Canvas和SVG的比较
Canvas SVG
基于像素(canvas 实质上是一种带有绘图 API 的图像元素) 基于对象模型(SVG 元素类似于 HTML 元素)
单个 HTML 元素,其行为类似于 <img> 多个图形元素,是文档对象模型 (DOM) 的一部分
通过脚本以编程方式创建和修改视觉呈现 使用标记创建视觉呈现,并通过 CSS 或通过脚本以编程方式修改视觉呈现
事件模型/用户交互是粗粒度的—仅在 canvas 元素级别;必须通过鼠标坐标对交互进行手动编程设置 事件模型/用户交互是基于对象的,在最基本的图像元素级别进行——线条、矩形、路径
API 不支持可访问性;除了 canvas,还必须使用基于标记的技术 SVG 标记和对象模型直接支持可访问性

SVG 是一种保留模式 (retained mode)的图形模型,是一种在内存中进行持久处理的模型。类似于 HTML,SVG 构建了包含图元、属性和样式的对象模型。在 HTML5 文档中出现 <svg> 元素时,它的作用类似于一个内联块,并且是 HTML 文档树的一部分。

Canvas 是一种位图,采用直接模式 (immediate mode)的图形应用程序编程接口 (API) 在其上进行绘图。 Canvas 是一种“发后不理”(Fire and Forget) 模型,在这种模式下,将直接向位图呈现其图形,之后对绘制的形状并不知晓;最后只呈现生成的位图。 

可以认为 Canvas 类似于 Windows GDI API,您通过编程方式向窗口中绘制图形;而 SVG 类似于 HTML 标记,具有元素、样式、事件和基于 DOM 的编程能力。Canvas 是过程性的,而 SVG 是声明性的。

方案

以下各节介绍了这两种技术各自的优点和局限性,包括判断应该为给定任务选择哪种技术的一般方法。下图演示了从 Canvas 到 SVG 的范围内每种方案的位置,在两者之间有一个明显的交叉点。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论