<canvas> 标签是 HTML 5 中的新标签,像所有的dom对象一样它有自己本身的属性、方法和事件, 其中就有绘图的方法,js能够调用它来进行绘图 ,最近在研读《html5与css3权威指南》下面对其中最好玩的canvas的学习做下读书笔记与实 验。温馨提示:以下所有实验请使用最新版的opera,火狐.

定义:

<canvas> 标签定义图形,比如图表和其他图像。

<canvas> 标签只是图形容器,您必须使用脚本(javascript)来绘制图形。

aaarticlea/png;base64,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" alt="" />

实例

如何通过 canvas 元素来显示一个红色的矩形:

 <!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas">您的浏览器不支持canvas标记!</canvas>
<script type="text/javascript">
var canvas=document.getElementById('myCanvas');
var ctx=canvas.getContext('2d');
ctx.fillStyle='#FF0000';
ctx.fillRect(0,0,80,100);
</script>
</body>
</html>

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJwAAACGCAIAAACnl3TnAAABUUlEQVR4nO3RwQkAIAwEwfTftBbgVxDGHVJAjp0Vzrx+IPcVFVRU0BF15q8TFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQUUFFRVUVFBRQeaqzxUVVFRQUUFFBRUVVFRQUUFFBRUVVFRQUUFFBRUVVFRQUUFFBRUVVFRQUUFFBRUVVFRQUUFFBRUVVFRQUUFFBRUVtAEzxswktOrIEAAAAABJRU5ErkJggg==" alt="" />

<canvas> 的历史:

这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。

<canvas> 标记由 Apple 在 Safari 1.3 Web 浏览器中引入。对 HTML 的这一根本扩展的原因在于,HTML 在 Safari 中的绘图能力也为 Mac OS X 桌面的 Dashboard 组件所使用,并且 Apple 希望有一种方式在 Dashboard 中支持脚本化的图形。

Firefox 1.5 和 Opera 9 都跟随了 Safari 的引领。这两个浏览器都支持 <canvas> 标记。

我们甚至可以在 IE 中使用 <canvas> 标记,并在 IE 的 VML 支持的基础上用开源的 JavaScript 代码(由 Google 发起)来构建兼容性的画布。 参见:http://excanvas.sourceforge.net/

<canvas> 的标准化的努力由一个 Web 浏览器厂商的非正式协会在推进,目前 <canvas> 已经成为 HTML 5 草案中一个正式的标签。 参见:http://www.whatwg.org/specs/web-apps/current-work/

<canvas> 标记和 SVG 以及 VML 之间的差异:

<canvas> 标记和 SVG 以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图。

这两种方式在功能上是等同的,任何一种都可以用另一种来模拟。从表面上看,它们很不相同,可是,每一种都有强项和弱点。例如,SVG 绘图很容易编辑,只要从其描述中移除元素就行。

要从同一图形的一个 <canvas> 标记中移除元素,往往需要擦掉绘图重新绘制它。

如何使用 <canvas> 标记绘图:

大多数 Canvas 绘图 API 都没有定义在 <canvas> 元素本身上,而是定义在通过画布的 getContext() 方法获得的一个“绘图环境”对象上。

Canvas API 也使用了路径的表示法。但是,路径由一系列的方法调用来定义,而不是描述为字母和数字的字符串,比如调用 beginPath() 和 arc() 方法。

一旦定义了路径,其他的方法,如 fill(),都是对此路径操作。绘图环境的各种属性,比如 fillStyle,说明了这些操作如何使用。

注释:Canvas API 非常紧凑的一个原因上它没有对绘制文本提供任何支持。要把文本加入到一个 <canvas> 图形,必须要么自己绘制它再用位图图像合并它,或者在 <canvas> 上方使用 CSS 定位来覆盖 HTML 文本。

最新文章

  1. 添加已运行daemon进程(falcon-agent)到supervisor测试
  2. Ubuntu16.04+Tensorlow+caffe+opencv3.1+theano部署
  3. 用jquery编写的tab插件
  4. [转]NPOI导出EXCEL 打印设置分页及打印标题
  5. LoadRunner测试50人同时登陆下单
  6. 定制对ArrayList的sort方法的自定义排序
  7. POJ-2175 Evacuation Plan 最小费用流、负环判定
  8. maven 启动 报错 Fatal error compiling: 无效的目标发行版
  9. css_兼容IE和FF的写法
  10. 指针属性直接赋值 最好先retain 否则内存释放导致crash
  11. SQL Server 2008 安装或卸载时提示“重启计算机失败&quot;的解决办法(转)
  12. ssh-keygen的使用方法
  13. poj 3250 Bad Hair Day【栈】
  14. UITableViewCell上面添加UIWebView
  15. IP地址冲突
  16. PHP 7 新特性
  17. 运算符和Scanner的使用
  18. 2017-2018-2 20155228 《网络对抗技术》 实验五:MSF基础应用
  19. 免费代理ip爬虫分享
  20. 047 SparkSQL自定义UDF函数

热门文章

  1. python实践项目—Collatz序列
  2. android 自定义滑动按钮
  3. 介绍几个PHP 自带的加密解密函数
  4. zookeeper环境搭建(Linux)
  5. vi-vim常用命令
  6. Python学习 :文件操作
  7. ADB工具的安装
  8. OpenCV代码提取:transpose函数的实现
  9. vs2015-Cordova开发安卓应用环境搭建
  10. (4)分布式下的爬虫Scrapy应该如何做-规则自动爬取及命令行下传参