JS30 day08 - Fun With HTML5 Canvas
作業內容
今天要做出一個網頁,可以在上面畫畫,隨著畫筆移動,顏色會一直循環,色筆粗度也會變大變小
可以參考這份 CodePen
學到什麼
-
HTML
- canvas 這個 HTML 標籤就是用來使用 JS 畫圖的
-
JS
- 在canvas 上面用 JS 畫畫的時候,並不是直接畫在 html 的 canvas 上面,而是畫在 context(渲染環境) 上面,一個畫布可以同時有好幾個渲染環境,環境必須指定他是 2D 或是 3D
1
2const canvas = document.querySelector('#draw');
const ctx = canvas.getContext('2d');MDN: https://developer.mozilla.org/zh-TW/docs/Web/API/Canvas_API/Tutorial/Basic_usage
-
全域變數 window 的 innerHeight/innerWidth 就代表當下螢幕畫面寬/高
canvas.width = window.innerWidth;
-
canvas 的 context 相關方法跟屬性真的多到記不起來,不過以後用到的機會應該也不多,所以就先把這次用到的先記錄下來:
1
2
3
4
5
6
7
8
9
10
11//屬性
ctx.strokeStyle = '#BADA55'; //畫筆的顏色
ctx.lineJoin = 'round'; //兩條線交會的時候是圓形
ctx.lineCap = 'round'; //線的起終點是圓形
ctx.lineWidth = 50; //筆的寬度
//方法
ctx.beginPath(); //產生一個新路徑,路徑會被存在一個次路徑 (sub-path) 清單中
ctx.moveTo(lastX, lastY); //設定畫圖起點
ctx.lineTo(e.offsetX, e.offsetY); //lineTo是畫直線的時候表示要到哪裡,其他還有畫各種曲線的方法
ctx.stroke(); //畫出圖形邊框-
如果想要用動畫配合顏色變化,顏色可以用 hsl 表示,因為他的第一個值可以從 0~360 一直循環
https://mothereffinghsl.com/ -
mouseout
這個 event 用在滑鼠離開指定 selector 時觸發
總結
雖然之後可能會用到這個的機會很少,但我覺得這個練習對於事件的控制來說還滿有幫助的!
參考資料:
https://github.com/wesbos/JavaScript30
code 內容:
JS:
1 | const canvas = document.querySelector('#draw'); |