HTML5边玩边学(1)画布实现方法


Posted in HTML / CSS onSeptember 21, 2010

一、<canvas>标签

Html5 引入了一个新的 <canvas> 标签,这个标签所代表的区域就好象一块画布,你的所有图形绘制最后都要在这块画布上呈现。有了这个标签,浏览器的图形表现力被极大的提升,Flash 和 SilverLight 有没有感到威胁呢?

新闻链接:Google声称Chrome7浏览器将提速60倍

<canvas>标签的用法非常简单,如下:

复制代码
代码如下:

<canvas id="tutorial" width="150" height="150" style="background-color:red;">
你的浏览器不支持 Canvas 标签
</canvas>

<canvas>标签和普通的 HTML 标签没有多大的区别,你可以设置它的宽度和高度,可以通过 CSS 设置它的背景色、边框样式等等。

你可以在 这里 找到关于 <canvas> 标签的更多内容。

标签中间的内容是替换内容,如果用户的浏览器不支持 <canvas> 标签,这段内容就会被显示出来;如果用户的浏览器支持 <canvas> 标签,则这段内容将被忽略。

上面的 <canvas> 代码显示效果如下:

你的浏览器不支持 Canvas 标签

如果你用的是IE浏览器,可能只能看到一个提示;如果你用的是谷歌浏览器或者火狐浏览器,你就可以看到一个红色的方块区域。
二、渲染上下文 Rendering Context
其实光有 <canvas> 标签我们并不能作任何事情,玩过 Windows 编程的同学都知道,在 Windows 里面绘图先要得到一个设备上下文 DC ,在 <canvas> 标签上绘图也需要先得到一个渲染上下文,我们的图形并不是直接画到屏幕上的,而是先画到上下文(Context)上,然后再刷新到屏幕上面的。
题外话: 为什么要整出一个“上下文”这么复杂的概念呢?因为有了上下文对象,我们就可以让各种不同的图形设备在我们眼里面看起都是一个样,我们只需要专注于绘图,其他的工作就让操作系统和浏览器去操心吧,说白了就是把各式各样的具体变成统一的抽象,从而减轻我们的负担。
获取上下文非常简单,只需要如下两行代码:
var canvas = document.getElementById('tutorial');
var ctx = canvas.getContext('2d');
首先获取 canvas 对象,然后调用 canvas 对象的 getContext 方法,这个方法目前只能传入参数 "2d",不久的将来他可能会支持参数 "3d",你一定明白那意味着什么,让我们期待吧。
getContext 方法返回一个 CanvasRenderingContext2D 对象 ,即渲染上下文对象,你可以在 这里 找到关于它的更多内容,都是一些绘图方法。

三、浏览器支持
除了在那些不支持的浏览器上显示替用内容之外,我们还可以通过脚本的方式来检查浏览器是否支持 canvas ,方法很简单,判断 getContext 函数是否存在即可,代码如下:

复制代码
代码如下:

var canvas = document.getElementById('tutorial');
if (canvas.getContext){
alert("支持 <canvas> 标签");
} else {
alert("不支持 <canvas> 标签");
}

四、一个小例子
下面将用 HTML5 的绘图功能演示一个上下移动的线条的例子, 具体的代码将在后续内容中给出


提示:您可以先修改部分代码再运行

你的浏览器不支持 <canvas>标签,请使用 Chrome 浏览器 或者 FireFox 浏览器
HTML / CSS 相关文章推荐
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
Dec 31 HTML / CSS
使用css3制作动感导航条示例
Jan 26 HTML / CSS
纯CSS3实现运行时钟的示例代码
Jan 25 HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
Nov 23 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
Jan 21 HTML / CSS
在HTML5中使用MathML数学公式的简单讲解
Feb 19 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
Mar 25 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
Apr 05 HTML / CSS
HTML5拖放效果的实现代码
Nov 17 HTML / CSS
Html5写一个简单的俄罗斯方块小游戏
Dec 03 HTML / CSS
html+css实现环绕倒影加载特效
Jul 07 HTML / CSS
css样式important规则的正确使用方式
Jun 10 HTML / CSS
html5 学习简单的拾色器
Sep 03 #HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
Jul 20 #HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
Jun 11 #HTML / CSS
用HTML5.0制作网页的教程
May 30 #HTML / CSS
HTML5 微格式和相关的属性名称
Feb 10 #HTML / CSS
HTML5 标准将把互联网视频扔回到黑暗时代
Feb 10 #HTML / CSS
HTML5是否真的可以取代Flash
Feb 10 #HTML / CSS
You might like
php递归函数怎么用才有效
2018/02/24 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
决策树的python实现方法
2014/11/18 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
Opencv求取连通区域重心实例
2020/06/04 Python
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
工程造价专业大专生求职信
2013/10/06 职场文书
2014年高考决心书
2014/03/11 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
2015年预算员工作总结
2015/05/14 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书