canvas
描述:canvas标簽是H5版本中提出的新标簽
目的:替換像flash等其他做動畫或遊戲的插件的一個标簽,能夠大大減小頁面的結構大小。讓頁面加載速度變快。
說明:
- canvas标簽可以了解為一個‘div’
隻不過div是存放元素的,而canvas則是提供了一個區域用來繪制圖形。
- canvas标簽習慣上在标簽内部對其大小進行設定
<canvas width=’300’ height=’300’>您的浏覽器不支援canvas标簽,請變更支援cnavas标簽的浏覽器</canvas>
- canvas标簽本身就是一個普通的畫闆,除此之外沒有任何多餘的功能
内部的多有内容或圖形都需要通過js腳本來完成。
使用:
首先建立canvas畫布,而如果想要在畫布上進行操作,則需要通過腳本來建立一個‘畫家’,來幫助我們進行内容繪制。
畫家的生成:
Var huaban=document.querySelector(‘canvas’);
Var ctx=huaban.getContext(‘2d’);
示例:
canvas {
border: 1px solid;
}
<canvas width="300" height="300">您的浏覽器不支援canvas标簽,請更換支援canvas标簽的浏覽器</canvas>
<script>
var huaban = document.querySelector('canvas');
var ctx = huaban.getContext('2d');
ctx.fillRect(10, 20, 50, 100); //繪制實心是矩形
// ctx.strokeRect(10, 20, 50, 50);//繪制空心的矩形
</script>
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB1kMNRlT0kkeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2ETN2ADOzETM1EzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
特征:
上屏即像素化(内部繪制的圖形一旦完成,就不能更改)
- 繪制矩形方法:ctx.fillRect(左上角橫坐标,左上角縱坐标,矩形寬度,矩形高度);
- 設定畫筆的顔色:ctx.fillStyle=’顔色’;
- 察除矩形方法:ctx.clearRect(左上角橫坐标,左上角縱坐标,察除寬度,察除高度);
示例:
canvas {
border: 1px solid;
}
<canvas width="300" height="300">您的浏覽器不支援canvas标簽,請更換支援canvas标簽的浏覽器</canvas>
<script>
// fps 30 40 20 15 60
// 描述:frame per second(每秒/每幀要加載的畫面)
// 公式:1s/幀數=間隔調用時間
var huaban = document.querySelector('canvas');
var ctx = huaban.getContext('2d');
var distance = 10;
var fangxiang = 1; //用來控制方向 +1代表向右 -1代表向左
var timer = setInterval(function() {
// 正向移動/向右移動
if (distance == 0) {
fangxiang = 1;
}
// 反向移動/向左移動
if (distance == 250) {
fangxiang = -1;
}
//根據方向進行位移
switch (fangxiang) {
case 1:
{
// 擦除畫布
ctx.clearRect(0, 0, 300, 300);
// 修改顔色
ctx.fillStyle = 'blue';
// 運動
ctx.fillRect(++distance, 50, 50, 50);
}
break;
case -1:
{
// 擦除畫布
ctx.clearRect(0, 0, 300, 300);
// 修改顔色
ctx.fillStyle = 'orange';
// 運動
ctx.fillRect(--distance, 50, 50, 50);
}
break;
}
}, 25);
</script>