Event事件學習實用路線(9)——Event事件之鍵盤事件——案例:鍵盤操作元素位置——案例:鍵盤事件組合鍵控制



鍵盤事件




keydown、keyup



這兩事件沒太多好說的,非常簡單,大家看代碼即可掌握了。
        document.addEventListener("keydown", function(){
            console.log('鍵盤按下');
        });

        document.addEventListener("keyup", function(){
            console.log('鍵盤擡起');
        });

keydown:鼠標按下事件
keyup:鼠標擡起事件

當一直按住鍵盤,不擡起,就一直執行keydown事件。
在這裏插入圖片描述


鍵盤事件-事件對象



 // 鍵盤按下
        document.addEventListener('keydown',function(e){
            console.log(e)
        })

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

event.keyCode、event.key



上例中,xiao迪按了“F12”鍵,我們在log中可以看到key和keycode的值,一個是“F12”,一個是“123”。
        document.addEventListener("keydown", function(e){
            
            console.log("--------------------------------------");

            console.log("鍵碼: " + e.keyCode)

            console.log("鍵值: " + e.key)
        });

keyCode :鍵碼
e.key :鍵值
在這裏插入圖片描述

event.ctrlKey、event.altKey、event.shiftKey



        document.addEventListener("keydown", function(e){

            console.log("--------------------------------------");

            console.log("鍵碼: " + e.keyCode);

            console.log("鍵值: " + e.key);

            console.log("是否按下Ctrl鍵: " + e.ctrlKey);

            console.log("是否按下alt鍵: " + e.altKey);

            console.log("是否按下shift鍵" + e.shiftKey);
        });

e.ctrlKey:是否按下Ctrl鍵
e.altKey: 是否按下alt鍵
e.shiftKey:是否按下shift鍵
在這裏插入圖片描述
後面我們會再對鍵盤事件的應用做闡述,總之大家肯定能想到鍵盤事件是會頻繁使用的。



案例:鍵盤操作元素位置



我們先看看“上”、“下”、“左”、“右”的鍵碼:

   document.addEventListener("keydown", (e)=>{
       console.log(e.key, e.keyCode);
   });

左 :37
上 :38
右 :39
下 :40
在這裏插入圖片描述

  有的朋友可能會問直接用key就好,爲啥還麻煩地去去用keycode,因爲在平臺方面存在一些兼容問題,xiao迪這裏還是強烈推薦大家儘量能用keycode就用它做邏輯處理!


代碼相信應該不難,如果對某個方法有問題,問度娘一定會得到解決。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    div{
        width: 200px;
        height: 200px;
        background:red;
        position:absolute;
    }
</style>
<body>
    <div></div>
    <script>
        let div = document.querySelector("div");
        const speed = 5;

        document.addEventListener("keydown", (e)=>{
            // console.log(e.key, e.keyCode);
            switch (e.keyCode) {
                case 39:
                    div.style.left = parseFloat(window.getComputedStyle(div).left) + speed  + "px";
                    break;
                case 37:
                    div.style.left = parseFloat(window.getComputedStyle(div).left) - speed  + "px";
                    break;
                case 38:
                    div.style.top = parseFloat(window.getComputedStyle(div).top) - speed  + "px";
                    break;
                case 40:
                    div.style.top = parseFloat(window.getComputedStyle(div).top) + speed  + "px";
                    break;
                default:
                    // F12和F5除外
                    if (e.keyCode == 123 || e.keyCode == 116)
                    {
                        break; 
                    }
                    alert("請按方向鍵進行操作!"); 
                    break;
            }
        });
    </script>
</body>
</html>

       可能會有些卡頓,我們可以利用定時器或者動畫幀進行優化,xiao迪在這裏就不擴展了,如果想了解,請看小編分享的定時器或者動畫部分的學習分享。
  
在這裏插入圖片描述



案例:鍵盤事件組合鍵控制



transform:scale(1.5) <CSS3樣式>設置縮放比例。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    div{
        width: 200px;
        height: 200px;
        background:red;
        position:absolute;
    }
</style>
<body>
    <div></div>
    <script>
        let div = document.querySelector("div");
        const speed = 5;
        let scale = 1;

        document.addEventListener("keydown", (e)=>{
            // console.log(e.key, e.keyCode);
            switch (e.keyCode) {
                case 39:
                    div.style.left = parseFloat(window.getComputedStyle(div).left) + speed  + "px";
                    break;
                case 37:
                    div.style.left = parseFloat(window.getComputedStyle(div).left) - speed  + "px";
                    break;
                case 38:
                    div.style.top = parseFloat(window.getComputedStyle(div).top) - speed  + "px";
                    break;
                case 40:
                    div.style.top = parseFloat(window.getComputedStyle(div).top) + speed  + "px";
                    break;
                default:
                    // F12和F5除外
                    if (e.keyCode == 123 || e.keyCode == 116|| e.keyCode == 17)
                    {
                        break; 
                    }
                    alert("請按方向鍵進行操作!"); 
                    break;
            }

            if(e.keyCode == 38 && e.ctrlKey){
                scale += 0.5;
                div.style.transform = `scale(${scale})`;
            }

            if(e.keyCode == 40 && e.ctrlKey){
                scale -= 0.5;
                div.style.transform = `scale(${scale})`;
            }

        });
    </script>
</body>
</html>

ctrl + 方向上鍵 放大
ctrl + 方向下鍵 縮小
在這裏插入圖片描述



(後續待補充)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章