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 给背景设置渐变色的方法
Sep 12 HTML / CSS
使用css3实现超炫的loading加载动画效果
May 07 HTML / CSS
一款纯css3制作的2015年元旦雪人动画特效教程
Dec 29 HTML / CSS
用CSS3绘制三角形的简单方法
Jul 17 HTML / CSS
css3利用transform变形结合事件完成扇形导航
Oct 26 HTML / CSS
如何在网站上添加谷歌定位信息
Apr 16 HTML / CSS
简单介绍HTML5中audio标签的使用
Sep 24 HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
Dec 10 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
Mar 31 HTML / CSS
sass 常用备忘案例详解
Sep 15 HTML / CSS
html中相对位置与绝对位置的具体使用
May 15 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汉字转换拼音的类
2013/06/18 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
python如何为被装饰的函数保留元数据
2018/03/21 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
python collections模块的使用
2020/10/16 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
2014年幼儿园植树节活动方案
2014/03/02 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
工作犯错保证书
2015/05/11 职场文书