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 25 HTML / CSS
css3 background属性调整增强介绍
Dec 18 HTML / CSS
使用css3实现的tab选项卡代码分享
Dec 09 HTML / CSS
CSS3制作轮播图的一种方法
Nov 11 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
Oct 17 HTML / CSS
HTML5 在canvas中绘制文本附效果图
Jun 23 HTML / CSS
5 个强大的HTML5 API 函数推荐
Nov 19 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
Nov 16 HTML / CSS
Canvas 帧动画吃苹果小游戏
Aug 05 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
Aug 19 HTML / CSS
前后端结合实现amazeUI分页效果
Aug 21 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
Jan 25 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编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php筛选不存在的图片资源
2015/04/28 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
PHP实现简单日历类编写
2020/08/28 PHP
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
ES5新增数组的实现方法
2020/05/12 Javascript
Python深入学习之对象的属性
2014/08/31 Python
python中查看变量内存地址的方法
2015/05/05 Python
python事件驱动event实现详解
2018/11/21 Python
Pytorch释放显存占用方式
2020/01/13 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
Windows和Linux动态库应用异同
2016/07/28 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
财务会计毕业生个人求职信
2014/02/03 职场文书
社区服务活动小结
2014/07/08 职场文书
办理护照工作证明
2014/10/10 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
体检通知范文
2015/04/21 职场文书
法律意见书范文
2015/05/20 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书
Python何绘制带有背景色块的折线图
2022/04/23 Python