這章節要介紹的是:鍵盤的事件
🍋 瀏覽器會偵測到「user 在按的是哪個按鍵」
html:
🎃 畫面上,有三支火箭
1 | <div class="map"></div> |
css:
🎃 三支火箭,用「絕對定位」來寫它們各自的「初始位置」:
🍋 bottom: 0;
三支火箭的bottom
都是靠在最下面
🍋 用left
把三支火箭的位置區隔開來
🎃 用transition
做「漸變效果」
1 | html{ |
我要做的功能是:
- 按下「1」,
.rocket-1
就會發射 - 按下「2」,
.rocket-2
就會發射 - 按下「3」,
.rocket-3
就會發射
火箭的bottom
原本都是在「0」的位置,發射後,就會飛到「超過瀏覽器的位置」
JS 作法如下:
1️⃣ 在<body>
做監聽事件
🎃 建立變數body
,選取「整個<body>
的內容」:var body = document.body;
在<body>
做監聽事件 .addEventListener
🎃 當我「點擊鍵盤」時,就會觸發「keydown
事件」
🎃 將 function 命名為goRocket
1 | var body = document.body; |
2️⃣ function goRocket(e){}
查詢「我點擊的是哪個按鍵」
先來看一下,點擊「數字 1」會出現什麼結果
JS:
🎃 在 function 小括號裡面加上「參數e
」,透過「參數e
」來得知:我目前在按的是「哪個按鍵」
🎃 用e.keyCode
來查詢「目前,我點擊的是哪個按鍵」
1 | function goRocket(e){ |
在這個瀏覽器中,
🍋 我按下「數字 1」,在 Console 就會顯示「49」
🍋 我按下「數字 2」,在 Console 就會顯示「50」
🍋 我按下「數字 3」,在 Console 就會顯示「51」
🍋 我按下「空白鍵」,在 Console 就會顯示「32」
📖 這些數字代表的是 「鍵盤上,每個按鍵的編號」
📖 在做「鍵盤式移動的遊戲」時,就可以利用這個方式去做,例如:當 user 點擊「編號 32」時,就執行某個行為
用switch
寫「條件判斷式」
‼️ 因為在這個「火箭發射的案例」中,「按下數字 1, 2, 3」分別就會執行「相對應的行為」–> 每個條件都會符合–> 所以這裡很適合用switch
來寫
JS:
🎃 在switch
小括弧中,帶入的參數是「e.keyCode
」
🎃 case: 如果「我點擊的是“編號 49”」,就會去「更改.rocket-1
的style
狀態」
🍋 更改style
狀態–> 從「bottom: 0;
」變成「bottom: 2000px;
」
1 | function goRocket(e){ |
😄 寫完 JS 程式碼了!
調整飛行速率
如何調整「火箭的飛行速率」呢?
在 css 裡面,
🎃 調整「transition
的秒數」就可以調整「飛行速率」了
例如我把秒數從「1s」改成「5s」,速率就會變很慢
1 | .rocket{ |
調整速率曲線
css:
1 | .rocket{ |
🎃 「cubic-bezier(1, 0.08, 0, 1.19)
」是用來「調整速率的曲線」
在 Chrome 的開發者工具中,打開cubic-bezier
的紫色小框框(下圖紅色箭頭處),就可以用「不同數值」來「調整速率的曲線」
預設的速率曲線
css:
1 | .rocket{ |
除了「使用cubic-bezier
來調整“速率曲線”」之外,在transition
中,原本就有一些「預設的速率曲線」可以直接使用:
🍋 ease
🍋 linear
🍋 ease-in
🍋 ease-out
🍋 ease-in-out
完整 JS 程式碼:
1 | var body = document.body; |
我的 codepen 範例
https://codepen.io/saffranwang/full/ExawXYO