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教程:边框属性border的极致应用
Apr 02 HTML / CSS
CSS3制作半透明边框(Facebox)类似渐变
Dec 09 HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
Dec 18 HTML / CSS
纯css3实现的鼠标悬停动画按钮
Dec 23 HTML / CSS
纯css3实现走马灯效果
Dec 26 HTML / CSS
鲜为人知的HTML5语音合成功能
May 17 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
May 03 HTML / CSS
实例教程 利用html5和css3打造一款创意404页面
Oct 20 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
Dec 15 HTML / CSS
Html5新增标签有哪些
Apr 13 HTML / CSS
Html5 webview元素定位工具的实现
Aug 07 HTML / CSS
HTML5 drag和drop具体使用详解
Jan 18 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
人族 TERRAN 概述
2020/03/14 星际争霸
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
机械设计毕业生自荐信
2014/02/02 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
中学生家长评语大全
2014/04/16 职场文书
工伤事故证明
2014/10/20 职场文书
婚育证明格式
2015/06/17 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python