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代码实现的动画导航
Oct 31 HTML / CSS
CSS3 实现弹跳的小球动画
Oct 26 HTML / CSS
详解H5本地储存Web Storage
Jul 03 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
Jan 04 HTML / CSS
html5 svg 中元素点击事件添加方法
Jan 16 HTML / CSS
简单整理HTML5的基本特性和语法
Feb 18 HTML / CSS
HTML5不支持标签和新增标签详解
Jun 27 HTML / CSS
浅谈html5 video 移动端填坑记
Jan 15 HTML / CSS
HTML5 直播疯狂点赞动画实现代码 附源码
Apr 14 HTML / CSS
html+css实现分层金字塔的实例
Jun 02 HTML / CSS
css3 选择器
May 11 HTML / CSS
table不让td文字溢出操作方法
Dec 24 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
JS 网站性能优化笔记
2011/05/24 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
Python实现类继承实例
2014/07/04 Python
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
python妹子图简单爬虫实例
2015/07/07 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Python中bisect的使用方法
2019/12/31 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
Python 定义只读属性的实现方式
2020/03/05 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
大学生职业规划论文
2014/01/11 职场文书
仓库主管岗位职责
2014/03/02 职场文书
简单租房协议书
2014/04/09 职场文书
安全生产先进个人总结
2015/02/15 职场文书
实验心得体会范文
2016/01/25 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
Django框架之路由用法
2022/06/10 Python