html5 中的SVG 和canvas
想到昨天看资料的时候,发现html5 中的SVG 和canvas 都可以表示图形,那它们到底有哪些区别呢?该如何正确的使用它们呢?
1、SVG:可缩放矢量图形,(Scalable Vector Graphics),SVG使用XML格式定义图像。
canvas:<canvas> 标签定义图形,比如图表和其他图像;<canvas> 标签只是图形容器,您必须使用脚本来绘制图形。
2、<canvas> 标记和 SVG 的另外一个重要的不同点是:(VML我还没有了解过,后续会进行了解并记录)
<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 使用一个 XML 文档来描述绘图。
这两种方式在功能上是等同的,任何一种都可以用另一种来模拟。从表面上看,它们很不相同,可是,每一种都有强项和弱点。
例如,SVG 绘图很容易编辑,只要从其描述中移除元素就行。要从同一图形的一个 <canvas> 标记中移除元素,往往需要擦掉绘图重新绘制它。
3、svg绘制出来的每一个图形元素都是独立的DOM节点,可方便后期绑定事件或修改,而canvas输出的是一整幅画布;
svg输出的图形是矢量的,后期可以修改参数来自由放大缩小,无失真,canvas输出标量画布,就像一张图片一样。
4、svg是一种在网页上画矢量图的方法,结构基于XML。他和canvas最大的不同,就是他的每个图形都是独立的,都具有一个“html标签”,都可以分别操作(这点和flash有点类似)
canvas画出的图形都是附在canvas区域之上,但图形都是不可操作的,如果要操作图形,就是直接操作整个canvas,即清空canvas和重绘。
下面是最后整理出的结果哦;
canvas和svg的共同点:
1、都是HTML5的新标签;
2、都可以用css和js进行操作;
3、浏览器对它们的支持度还不是很高;
canvas和svg的区别:
1、SVG的图形被称为矢量图,canvas的图形被称为位图;
2、SVG的每个图形都是独立的标签,可以进行独立操作,canvas元素只有一个标签,里面的所有图形为一个整体,如果要对canvas图像进行操作,只能清除掉在重绘;
3、SVG话200个圆,页面中就可能有200个标签,而canvas画200个圆,页面中就还是只有一个canvas元素;
4、SVG图形可以夹带文本,seo(搜索引擎)能很好的搜索到相关信息,seo是搜索不到canvas的。
那么两种标签都基本能达到我们想要的结果,在这种情况下我们该如何判断使用哪种标签呢?
svg 使用:
svg由于是矢量图,所以他对点线面这样的图形很擅长,他完全可以用来实现一个web的Excel图形报表。
svg跨PC和移动端
svg不擅长做复杂的动画,因为它的动画牵扯的元素太多了——牵一发而动全身,同时动画N个元素的效率是不会高的
特别要注意,svg不能实现太复杂的效果,只要他的标签一多,效率就急剧下降
canvas使用:
canvas虽然每次动画都要重绘画布,但他效率尚可,可以制作不是十分复杂的动画效果,游戏,与audio标签等结合,可以做出不错的游戏。
canvas之所以擅长动画,是因为他会清空画布,不会造成元素累积过多卡死浏览器
它跨PC和移动平台,毫无压力
注意:canvas的绘图过程必须讲究技巧,不然还是很可能卡死浏览器。
写完这个,我自己对这两个标签有了一定的了解,也希望看到这篇博客的朋友能对这两个标签有新的认识哦,我是新手,还需加油(●'◡'●)。
html5 中的SVG 和canvas的更多相关文章
- HTML5中的SVG
* SVG * 基本内容 * SVG并不属于HTML5专有内容 * HTML5提供有关SVG原生的内容 * 在HTML5出现之前,就有SVG内容 * SVG,简单来说就是矢量图 * SVG文件的扩展名 ...
- HTML5中使用SVG
SVG 即 Scalable Vector Graphics,是一种用来绘制矢量图的 HTML5 标签.你只需定义好XML属性,就能获得一致的图像元素. 使用SVG之前先将标签加入到HTML body ...
- HTML5中video标签与canvas绘图的使用
video标签的使用 video标签定义视频, 它是html5中的新标签, 它的属性如下(参考自文档): domo01 <!DOCTYPE html> <html lang=&quo ...
- 如何在HTML5中使用SVG
复制而来---原地址http://www.php100.com/html/webkaifa/HTML5/2012/0731/10776.html SVG 即 Scalable Vector Graph ...
- HTML5学习(六)---------SVG 与Canvas
参考教程:http://www.w3school.com.cn/html5/html_5_canvas_vs_svg.asp Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不 ...
- HTML5 中 40 个最重要的技术点
介绍 我是一个ASP.NET MVC的开发者,最近在我找工作的时候被问到很多与HTML5相关的问题和新特性.所以以下40个重要的问题将帮助你复习HTML5相关的知识. 这些问题不是你得到工作的高效解决 ...
- HTML中的SVG
HTML5中的SVG是Scalable Vector Graphic的简称,是一种用来绘制矢量图的HTML5标签,由万维网联盟定制,是一个基于可扩展标记语言,用于绘制二维可缩放矢量图形. 是一种使用X ...
- HTML5中canvas与SVG有什么区别
SVG SVG 是一种使用 XML 描述 2D 图形的语言,它基于XML也就是我们可以为某个元素附加JavaScript事件处理器,如果SVG 对象的属性发生变化,那么浏览器能够自动重现图形. Can ...
- 三天学会HTML5——SVG和Canvas的使用
在第一天学习了HTML5的一些非常重要的基本知识,今天将进行更深层学习 首先来回顾第一天学习的内容,第一天学习了新标签,新控件,验证功能,应用缓存等内容. 第2天将学习如何使用Canvas 和使用SV ...
随机推荐
- Nancy 搭建
Nancy 框架 1.是一个轻量级用于构建http相应的web框架: 2.与mvc类似,有自己的路由机制: 3.可以处理 DELETE , GET , HEAD , OPTIONS , ...
- PHP 获取linux服务器性能CPU、内存、硬盘、进程等使用率
数据库配置文件: conn.php <?php define("MONITORED_IP", "172.16.0.191"); //被监控的服务器IP地址 ...
- [LeetCode]题解(python):143-Reorder List
题目来源: https://leetcode.com/problems/reorder-list/ 题意分析: 给定一个链表L:L0→L1→…→Ln-1→Ln,改变链表的排序为: L0→Ln→L1→L ...
- iOS 开源库
youtube下载神器:https://github.com/rg3/youtube-dl我擦咧 vim插件:https://github.com/Valloric/YouCompleteMevim插 ...
- APM代码学习笔记1
libraries目录 传感器 AP_InertialSensor 惯性导航传感器 就是陀螺仪加速计 AP_Baro 气压计 居然支持BMP085 在我印象中APM一直用高端的MS5611 AP_Co ...
- 编程器NAND Flash 技术入门
NAND Flash分类 SLC(Single-Level Cell)架构:单一储存单元(Cell)可储存1bit data MLC(Multi-Level Cell)架构:单一储存单元(Cell)可 ...
- 深入剖析PE文件
不赖猴的笔记,转载请注明出处. 深入剖析PE文件 PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解. 一. ...
- 窗函数的C语言实现
一般的讲数字信号处理的书中都会提到窗函数.大多数只会提及其中的几种.这里我把这些窗都用C语言实现了一下,都不复杂,但如果要自己去弄也挺费时间.所有函数都用Matlab验证了.包括以下窗: /*窗类型* ...
- Oracle闪回操作
Oracle闪回操作 1. 记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') fr ...
- Android导航栏ActionBar的具体分析
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/39378825 关于ActionBar,相信大家并不陌生,可是真正能够熟练使用的也不是许多,这 ...