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 3D制作实战案例分析
Sep 18 HTML / CSS
CSS3中31种选择器使用方法教程
Dec 05 HTML / CSS
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
Dec 30 HTML / CSS
详解CSS3的perspective属性设置3D变换距离的方法
May 23 HTML / CSS
CSS3毛玻璃效果(blur)有白边问题的解决方法
Nov 15 HTML / CSS
css3实现画半圆弧线的示例代码
Nov 06 HTML / CSS
CSS3实现王者匹配时的粒子动画效果
Apr 12 HTML / CSS
html5通过postMessage进行跨域通信的方法
Dec 04 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
Jun 17 HTML / CSS
Html5 video标签视频的最佳实践
Feb 26 HTML / CSS
html2canvas截图空白问题的解决
Mar 24 HTML / CSS
纯html+css实现打字效果
Aug 02 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
PHP实现的json类实例
2015/07/28 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
可以将word转成html的js代码
2010/04/11 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
Vue组件实现触底判断
2019/06/26 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Python的另外几种语言实现
2015/01/29 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
使用Python读取大文件的方法
2018/02/11 Python
python版飞机大战代码分享
2018/11/20 Python
python IDLE添加行号显示教程
2020/04/25 Python
python实现AdaBoost算法的示例
2020/10/03 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
建筑工程技术应届生求职信
2013/11/17 职场文书
学习十八大演讲稿
2014/09/15 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书