前言:花了4天半終於看完了《Head First HTML5》,這本書的學習給我最大的感受就是,自己知識的淺薄,還有非常多非常棒的技術在等著我呢。[熊本表情]扶朕起來,朕還能學!
H5新增標簽裡面最喜歡的就是<canvas>,所以這次就用它寫了個小demo,算是表達一下,對於它的愛意吧。
正文:
廢話不多說,上代碼~
html部分
<canvas id="myCanvas" width="800" height="800">想看圖?快去升級你的浏覽器吧~</canvas>
html部分只有這簡單的一句,<canvas>內部包含的文本在浏覽器不支持時輸出,這真的是非常方便的用法呢(此處省略<html><body>等必備標簽)
js部分
window.onload = function(){
//獲取canvas的引用
var myCanvas = document.getElementById("myCanvas");
//獲取context的引用
var context = myCanvas.getContext("2d");
//臉部
drawRect(context,15,0,90,130,"#ff813e");
//頭發
context.fillRect(10,0,100,40);
//左邊鬓角
context.fillRect(10,40,20,20);
//右邊鬓角
context.fillRect(90,40,20,20);
//左邊眼睛
//左邊眼睛眼眶
drawRect(context,25,70,25,15,"#fff");
//左邊眼睛眼球
drawRect(context,38,70,12,15,"#3d46ce");
//右邊眼睛
//右邊眼眶
drawRect(context,70,70,25,15,"#fff");
//右邊眼睛眼球
drawRect(context,70,70,12,15,"#3d46ce");
//鼻子
drawRect(context,54,88,12,12,"#ba7b56");
//嘴巴
drawRect(context,38,106,42,20,"#450000");
//舌頭
drawRect(context,50,116,20,10,"#f494b9");
};
雖然看著有這麼十幾行代碼,但是重復的部分很多,也就四個東西:
(1)document.getElementById(id值)
獲取到我們的canvas,以便在以後的代碼中運用它展現我們美麗的創作
(2)canvas.getContext("2d")
獲取畫布的上下文,返回一個對象,該對象中有非常多的方法可以為我們創作提供方便。(PS:雖然這裡是2d,但並不代表就一定有3d,不過這也是件好事,說不定它會是由你實現的呢?)
(3)drawRect(context,x,y,rectWidth,rectHeight,color)
這是一個自定義函數,它將canvas.getContext("2d")返回的對象作為參數傳入,以便我們在函數中調用該對象包含的各種方法。同時傳入想要繪制的點的坐標,以及繪制的矩形的寬度和高度,還有就是,我們填充矩形所用的顏色。
(4)context.fillRect(x,y,rectWidth,rectHeight)
偶偶偶耶,終於出現了,我們調用了一個context引用對象的方法,它為我們在畫布上繪制出一個黑色矩形。為啥是黑色?因為這是默認顏色啊,如果你想改變顏色,哼哼,那就接著看下面的部分。
接下來,我們就有請drawRect函數登場
function drawRect(context,x,y,rectWidth,rectHeight,color){
//開始一個路徑
context.beginPath();
//起始位置移動到x,y參數指定的點
context.moveTo(x,y);
//向坐標為(x+rectWidth,y)的點畫一條路徑
context.lineTo(x+rectWidth,y);
//向坐標為(x+rectWidth,y+rectHeight)的點畫一條路徑
context.lineTo(x+rectWidth,y+rectHeight);
//向坐標為(x,y+rectHeight)的點畫一條路徑
context.lineTo(x,y+rectHeight);
//閉合路徑
context.closePath();
//設置顏色
context.fillStyle = color;
//填充由我們所繪路徑形成的矩形
context.fill();
//設置顏色
context.fillStyle = "#000";
//設置描繪線條的寬度
context.lineWidth = 2;
//描線
context.stroke();
}
在drawRect函數中,我們采用了一條邊一條邊的畫矩形,當然你可以用其中用到的方法畫出你喜歡的各種形狀。其中要注意的是,我們畫出的路徑是不可見的,如果想看到路徑,可以用stroke方法描出我們的路徑,而此處我們畫的路徑是一個閉合的矩形,調用fill方法,則會用fillStyle指定的顏色填充該路徑指定的內部區域。所以想要改變填充或者描線的顏色,就試試fillStyle屬性吧~
至此,我們的demo已經完成啦~來看看效果吧~
啊哈哈哈哈啊哈哈哈哈,有沒有愛上canvas呢?(canvas說:就算你不愛我,也有很多人愛得我死去活來的,不過,如果你要愛我的話,勉強也可以接受啦,╮(╯▽╰)╭)
後話:天氣熱了,大家注意防暑,大中午的就別出門了,哪涼快哪待著去吧——來自作死中午出門吃飯,結果中暑頭痛要命的家伙的建議