SegmentFault 曾舉辦過一個社區官方的比賽「30 行 js 你能作出什麼?」,產生了好些有意思的代碼,大本鐘、瀑布粒子、模擬 loading 等各類精巧的實現。git
這期週刊主題,即是受此啓發——你能用 Canvas 畫布作出什麼?有人用它來加工 HTML5 的特效,有人用它來製做城市地圖,有人用它來作頁面遊戲,還有人用它來畫日月江河。跟隨本期週刊,把屏幕當作畫板,來進入 Canvas 的世界!github
<canvas id="introCanvas" width="825" height="74"> here let's get to it! </canvas>
1. 瞭解什麼是 Canvassql
基礎結構、座標系、路徑、圖像及背景狀態、像素操做……先了解 canvas 的基本原理。而後經過第二篇,將它的各類操做一一詳細瞭解,知其然,且知其因此然。segmentfault
繪圖:路徑、圖形(矩形/圓形/扇形)、文本、色彩、陰影微信小程序
圖像處理方法:drawImage
、getImageData / putImageData
、toDataURL
、save / restore
微信
動畫:座標系獲取less
像素處理:蒙版、灰度、亮度、反轉等函數
2. 上手第一步:畫個圓
先來畫圖形,三角形、正方形組成七巧板,圓形、座標系定位畫五角星,都是座標計算。再來加特效,分分鐘學會讓圖形跑起來。看看這三個,雖然都是輪子,但造的不錯啊!
3. 上手第二步:嘗試圖片處理
結合 JavaScript,來作一些圖片相關的基本的功能,好比
給圖片加水印:
裁剪圖片:
繪製圖片技巧:
繪製複雜的圖形:
4. 典型使用方式之動畫
關於 Canvas 動畫,這裏要重點推薦 @我仍舊在這裏 的專欄和獨立博客,做者的專欄入選了「SegmentFault 2016 年度專欄」,《每週一點 Canvas 動畫》系列寫了不少驚豔的動畫效果,推薦去訂閱。
其餘一些值得推薦的動畫實現:
5. 典型使用方式之開發個小遊戲吧!
Canvas 作網頁小遊戲也倍受推崇。一樣,先來看下該怎麼作,下面這兩篇文章精要簡明地講述 HTML5 遊戲的開發知識儲備。
而後,重點推薦 @fwon 的《從零開始開發一款 H5 小遊戲》系列:五篇從基礎場景到整個遊戲的實現思路,讓你對 H5 遊戲開發有個宏觀的瞭解,知道怎麼入手。該系列文章對應遊戲代碼已開源:Sinuous game,趕快去 star 吧!
最後,再來看看一個現成的方案,結合 Vue、ES6 快速簡單地作一個遊戲應用:
更多的 Canvas 高階使用方法,能夠再去探索,社區還有不少優秀的資料,好比 @hightopo 和 @MonoLog 的 HTML5 拓撲、3D 實現,很是優美,@musiq1989 在微信小程序中使用它來繪製圖表,等等。
在最後,推薦給你們幾個相關的庫,增長使用時的便捷。
6. 附:相關的庫
(本期完)
# SegmentFault 技術週刊 #
「技術週刊」是社區特別推出的技術內容系列,一週一主題。週刊篩選的每篇內容,是做者的獨到看法,踩坑總結和經驗分享。