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常用的几种颜色渐变模式总结
Nov 18 HTML / CSS
利用html5 canvas动态画饼状图的示例代码
Apr 02 HTML / CSS
HTML5 canvas画矩形时出现边框样式不一致的解决方法
Oct 14 HTML / CSS
HTML5学习笔记之History API
Feb 26 HTML / CSS
html5将图片转换成base64的实例代码
Sep 21 HTML / CSS
HTML5中indexedDB 数据库的使用实例
May 11 HTML / CSS
浅析HTML5:'data-'属性的作用
Jan 23 HTML / CSS
HTML5 manifest离线缓存的示例代码
Aug 08 HTML / CSS
Html5页面内使用JSON动画的实现
Jan 29 HTML / CSS
吃透移动端 Html5 响应式布局
Dec 16 HTML / CSS
CSS中em的正确打开方式详解
Apr 08 HTML / CSS
css filter和getUserMedia的联合使用
Feb 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
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
php模板函数 正则实现代码
2012/10/15 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
JavaScript 变量作用域分析
2011/07/04 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
python hook监听事件详解
2018/10/25 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Django 外键的使用方法详解
2019/07/19 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Django如何将URL映射到视图
2019/07/29 Python
Python之指数与E记法的区别详解
2019/11/21 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
python数字类型math库原理解析
2020/03/02 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
《桃花心木》教学反思
2014/02/17 职场文书
写给医生的感谢信
2015/01/22 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
校运会加油稿大全
2015/07/22 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python