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设计地图上的雷达定位提示效果
Apr 05 HTML / CSS
CSS3 animation实现简易幻灯片轮播特效
Sep 27 HTML / CSS
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
Nov 21 HTML / CSS
CSS3实现可翻转的hover效果
May 23 HTML / CSS
HTML5边玩边学(1)画布实现方法
Sep 21 HTML / CSS
html5-Canvas可以在web中绘制各种图形
Dec 26 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
Dec 27 HTML / CSS
iframe跨域的几种常用方法
Nov 11 HTML / CSS
Ratchet 模态框的实现
Aug 19 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
Nov 26 HTML / CSS
使用canvas对video视频某一刻截图功能
Sep 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 常用函数库和一些实用小技巧
2009/01/01 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
JS支持带x身份证号码验证函数
2008/08/10 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
react的hooks的用法详解
2020/10/12 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
python list转dict示例分享
2014/01/28 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
python 实现端口扫描工具
2020/12/18 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
班子个人四风问题整改措施
2014/10/04 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers