原文地址( https://developer.mozilla.org/En/Canvas_tutorial )
<canvas>是一个新的HTML元素,这个元素可以被Script语言(通常是JavaScript)用来绘制图形。例如可以用它来画图、合成图象、或做简单的(和不那么简单的)动画。
<canvas>最先在苹果公司(Apple)的Mac OS X Dashboard上被引入,而后被应用于Safari。基于Gecko1.8的浏览器,例如Firefox 1.5,也支持这个新元素。元素<canvas>是WhatWG Web applications 1.0也就是大家都知道的HTML 5标准规范的一部分。
在本教程中,我将试着讲述如何在你自己的网页中使用<canvas>元素。提供的示例应该会给你些清晰概念,即用<canvas>能做些什么的。这些示例也可作为你应用<canvas>的起点。
开始使用之前
用元素<canvas>并不难,只要你具有HTML和 JavaScript的基础知识。
如上所述,并不是所有现代浏览器都支持<canvas>元素,所以你需要 Firefox 1.5或更新版本、或者其他基于Gecko的浏览器例如Opera 9、或者最近版本的Safari才能看到所有示例的动作。
基本用法
<canvas>元素
让我们从<canvas>元素的定义开始吧。
<canvas id="tutorial" width="150" height="150"></canvas>
<canvas>看起来很像<img>,唯一不同就是它不含 src 和 alt 属性。它只有两个属性,width 和 height,两个都是可选的,并且都可以 DOM 或者 CSS 来设置。如果不指定width 和 height,默认的是宽300像素,高150像素。虽然可以通过 CSS 来调整canvas的大小,但渲染图像会缩放来适应布局的(如果你发现渲染结果看上去变形了,不必一味依赖CSS,可以尝试显式指定canvas的width 和 height 属性值)。
id 属性不是<canvas>专享的,就像标准的HTLM标签一样,任何一个HTML元素都可以指定其 id 值。一般,为元素指定 id 是个不错的主意,这样使得在脚本中应用更加方便。
<canvas>元素可以像普通图片一样指定其样式(边距,边框,背景等等)。然而这些样式并不会对canvas实际生成的图像产生什么影响。下面我们会看到如何应用样式。如果不指定样式,canvas默认是全透明的。
替用内容
因为 <canvas> 相对较新,有些浏览器并没实现,如Firefox 1.0 和 Internet Explorer,所以我们需要为那些不支持canvas的浏览器提供替用显示内容。
我们只需要直接在canvas元素内插入替用内容即可。不支持canvas的浏览器会忽略canvas元素而直接渲染替用内容,而支持的浏览器则会正常地渲染canvas。例如,我们可以把一些文字或图片填入canvas内,作为替用内容:
<canvas id="stockGraph" width="150" height="150">
current stock price: $3.15 +0.15
</canvas>
<canvas id="clock" width="150" height="150">
<img src="images/clock.png" width="150" height="150"/>
</canvas>
结束标签 </canvas> 是必须的
在Apple Safari里,<canvas>的实现跟<img>很相似,它没有结束标签。然而,为了使 <canvas> 能在web的世界里广泛适用,需要给替用内容提供一个容身之所,因此,在Mozilla的实现里结束标签(</canvas>)是必须的。
如果没有替用内容,<canvas id="foo" ...></canvas> 对 Safari 和 Mozilla 是完全兼容的—— Safari 会简单地忽略结束标签。
如果有替用内容,那么可以用一些 CSS 技巧来为并且仅为 Safari 隐藏替用内容,因为那些替用内容是需要在 IE 里显示但不需要在 Safari 里显示。
渲染上下文
<canvas> 创建的固定尺寸的绘图画面开放了一个或多个渲染上下文(rendering context),我们可以通过它们来控制要显示的内容。我们专注于2D 渲染上,这也是目前唯一的选择,可能在将来会添加基于OpenGL ES 的 3D 上下文。
<canvas> 初始化是空白的,要在上面用脚本画图首先需要其渲染上下文(rendering context),它可以通过 canvas 元素对象的 getContext 方法来获取,同时得到的还有一些画图用的函数。getContext() 接受一个用于描述其类型的值作为参数。
var canvas = document.getElementById('tutorial');
var ctx = canvas.getContext('2d');
上面第一行通过 getElementById 方法取得 canvas 对象的 DOM 节点。然后通过其 getContext 方法取得其画图操作上下文。
检查浏览器的支持
除了在那些不支持 的浏览器上显示替用内容,还可以通过脚本的方式来检查浏览器是否支持 canvas 。方法很简单,判断 getContext 是否存在即可。
var canvas = document.getElementById('tutorial');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
// drawing code here
} else {
// canvas-unsupported code here
}
代码模板
我们会用下面这个最简化的代码模板来(后续的示例需要用到)作为开始。
<html>
<head>
<title>Canvas tutorial</title>
<script type="text/javascript">
function draw(){
var canvas = document.getElementById('tutorial');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
}
}
</script>
<style type="text/css">
canvas { border: 1px solid black; }
</style>
</head>
<body onload="draw();">
<canvas id="tutorial" width="150" height="150"></canvas>
</body>
</html>
细心的你会发现我准备了一个名为 draw 的函数,它会在页面装载完毕之后执行一次(通过设置 body 标签的 onload 属性),它当然也可以在 setTimeout,setInterval,或者其他事件处理函数中被调用。
一个简单的例子
作为开始,来一个简单的吧——绘制两个交错的矩形,其中一个是有alpha透明效果。我们会在后面的示例中详细的让你了解它是如何运作的。
<html>
<head>
<script type="application/x-javascript">
function draw() {
var canvas = document.getElementById("canvas");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
}
}
</script>
</head>
<body onload="draw();">
<canvas id="canvas" width="150" height="150"></canvas>
</body>
</html>
效果图:
分享到:
相关推荐
基本用法 canvas 元素让我们从 canvas 元素本身开始教学。 canvas 元素只有两个属性:width 和 height。这两者非必须,也可以使用 DOM 属性(propertie)设定。如果不指定宽和高,canvas 就会使用 300 像素宽和 ...
##### 基本用法 **定义Canvas元素** ```html <canvas id="tutorial" width="150" height="150"></canvas> ``` - **`id` 属性**:这是一个通用的HTML属性,用于标识特定的元素。在Canvas中,我们通常为其分配一个...
这个初级入门教程主要涵盖了Canvas的基本概念、使用方式以及一些基本的绘图操作。 首先,Canvas是一个HTML标签,通过`<canvas>`元素在网页中创建一个可绘制的区域。例如: ```html <canvas width="500" height="500...
在这个开源的Android HTML5 Canvas教程中,我们将深入探讨如何在Android应用中利用Canvas进行交互式图形渲染。 首先,Canvas是HTML5的一个核心元素,它允许通过JavaScript进行动态图形绘制。在Android平台上,...
5. **形状绘制**:Canvas支持绘制各种基本形状,如矩形(`rect()`, `fillRect()`, `strokeRect()`)、圆形(`arc()`, `arcTo()`)和椭圆(`ellipse()`)。 6. **文本操作**:可以使用`fillText()`和`strokeText()`...
### HTML5 Canvas 教程详解 #### 一、引言 ...其中,`<canvas>`元素作为HTML5的一个...通过本教程的学习,开发者可以掌握`<canvas>`的基本使用方法及其在实际项目中的应用场景,进一步提升Web项目的视觉体验和技术含量。
这个“HTML5 Canvas 教程 pdf中文版 天涯浪子”资源显然是一份专为初学者和进阶者设计的指南,旨在帮助他们理解和掌握Canvas的使用技巧。 在Canvas中,你可以创建各种复杂的图形,如2D图表、游戏场景、动画,甚至是...
在HTML5 Canvas基础教程中,你可能会学习到如何绘制基本形状、组合形状、处理颜色和渐变、绘制文本、处理图像、实现动画效果、响应用户交互以及优化Canvas性能等内容。这些知识对于创建动态网页和游戏至关重要。通过...
HTML5 Canvas 的基本概念就是使用 canvas 元素来绘制图形。canvas 元素是一个 HTML 标签,用于定义一个画布区域。使用canvas 元素时,需要指定 width 和 height 属性,以定义画布的尺寸。在 canvas 元素内部,可以...
这个【电子书】【Web前端技术]HTML5 Canvas教程】应该会深入讲解Canvas的基本概念、语法以及实际应用。 首先,Canvas是一个HTML5元素,通过JavaScript与CSS结合,可以实现交互式的图形展示。它的基本结构是`<canvas...
本文将深入探讨 `<canvas>` 的基础知识及其基本用法。 #### 二、Canvas 元素简介 `<canvas>` 是一个用于通过脚本(通常为 JavaScript)进行绘图的 HTML 元素。它可以用来创建各种图形,如图表、图片组合或动画等。...
#### 二、Canvas 基本用法 ##### 2.1 `<canvas>` 元素 ```html <canvas id="tutorial" width="150" height="150"></canvas> ``` - **元素定义**: - `<canvas>` 类似于 `<img>` 元素,但它没有 `src` 和 `alt` ...
这个教程旨在详细介绍HTML5 Canvas的基本用法以及如何利用它来实现各种功能。 首先,让我们深入理解 `<canvas>` 元素。这是一个内联元素,类似于 `<img>`,但它不包含 `src` 和 `alt` 属性,因为它的内容不是通过...
除了基本的绘图和动画,Canvas还支持事件监听,这使得用户交互成为可能。例如,通过监听鼠标点击或触摸事件,可以响应用户的操作,改变图形的状态或者启动特定的动画。 学习HTML5 Canvas还需要理解SVG(Scalable ...
本基础教程由(英)Rob Hawkes撰写,旨在帮助初学者掌握Canvas的基本概念和实用技巧。 一、HTML5 Canvas概述 HTML5 Canvas是一个基于矢量图形的画布元素,通过JavaScript API来绘制和操作图像。这个API提供了大量的...
这个“Delphi Canvas方法在图片上写入文字.rar”压缩包可能包含了如何利用Canvas对象在图片上添加文本的示例代码或教程。在Delphi中,Canvas是一个接口,它提供了在各种图形设备上进行绘图的方法,如在TBitmap、...
HTML5的Canvas教程是Web开发中的一个重要组成部分,它允许开发者使用JavaScript进行动态图形绘制,创造出丰富的交互式用户体验。Canvas元素是HTML5引入的新特性,它为网页提供了在浏览器内进行2D图形绘制的能力。 ...
本文介绍了 `<canvas>` 的基本用法以及如何使用 JavaScript 在 `<canvas>` 上绘制图形。掌握这些基本概念后,可以进一步探索更高级的功能和技术,例如动画、路径绘制等。随着 Web 技术的发展,Canvas 的应用范围也在...