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实现时间轴效果
Jul 11 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
Feb 10 HTML / CSS
CSS3为背景图设置遮罩并解决遮罩样式继承问题
Jun 22 HTML / CSS
关于css中margin的值和垂直外边距重叠问题
Oct 27 HTML / CSS
CSS3实现菜单悬停效果
Nov 17 HTML / CSS
HTML5之SVG 2D入门7—SVG元素的重用与引用
Jan 30 HTML / CSS
HTML5离线应用与客户端存储的实现
May 03 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
Apr 09 HTML / CSS
小程序canvas中文字设置居中锚点
Apr 16 HTML / CSS
CSS实现渐变色边框(Gradient borders)的5种方法
Mar 25 HTML / CSS
CSS使用SVG实现动态分布的圆环发散路径动画
Dec 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网络操作函数汇总
2015/05/18 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
Smarty3配置及入门语法
2017/02/22 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
jQuery 技巧小结
2010/04/02 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
python中urlparse模块介绍与使用示例
2017/11/19 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
python爬取音频下载的示例代码
2020/10/19 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
求职推荐信范文
2013/12/01 职场文书
技术经理的自我评价范文
2013/12/03 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
庆元旦广播稿
2014/02/10 职场文书
留学经费担保书
2014/05/12 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
军人离婚协议书样本
2014/10/21 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android