【原】键盘测试2.0版

<!--
    之前写了个1.0版本,按键布局不美观,这又在原来的基础上修改了下,写了个2.0版本。
       代码思路:这次代码没有用keycode码放在数组中,而是用key属性,获取所按下的键的名称,再通过a标签的innerHTML属性,查找所有内容,如果内容相同,就将所对应的标签背景颜色设置为红色,用key这种方法来完成,优点是JS代码量少,但是不足之处是a标签的内容必须是和key显示的键名完全一样,否则会认为不是按下的键,所以项目中功能键的名称都按key定义的名称来设置的,用keycode就不会有这种情况,而且如果做104键盘(键盘有小键盘区的),用key就不能解决这种种情,必须用keycode来进行判断按下的键是否是小键盘区的,熟优熟劣根据自己喜好来选择吧。代码较烂,见谅,主要是和大家分享,让我们因代码而改变、成长并获得成功!
-->
 
效果图:

 

CSS代码:

  1         *{
  2             margin: 0;
  3             border: 0;
  4         }
  5 
  6         h1,p{
  7             text-align: center;
  8         }
  9         
 10         div{
 11             margin: 40px auto;
 12             width: 1000px;
 13             height: 490px;
 14         }
 15 
 16         a{
 17             display: block;
 18             height: 50px;
 19             width: 50px;
 20             border: 1px solid red;
 21             float: left;
 22             position: relative;
 23             margin-left: 10px;
 24             margin-top: 10px;
 25             text-align: center;
 26 
 27         }
 28 
 29         #esc{
 30             font-size: small;
 31         }
 32 
 33         #pause{
 34             margin-top: 10px;
 35             margin-left: 10px;
 36             float: left;
 37             border: 1px solid red;
 38             text-align: center;
 39             font-size: small;
 40         }
 41 
 42         #tab{
 43             margin-top: 10px;
 44             margin-left: 10px;
 45             float: left;
 46             height: 50px;
 47             width: 70px;
 48             border: 1px solid red;
 49             text-align: center;
 50         }
 51 
 52         #cap{
 53             margin-top: 10px;
 54             margin-left: 10px;
 55             float: left;
 56             height: 50px;
 57             width: 85px;
 58             border: 1px solid red;
 59             text-align: center;
 60         }
 61 
 62         #enter{
 63             margin-top: 10px;
 64             margin-left: 10px;
 65             float: left;
 66             height: 50px;
 67             width: 85px;
 68             border: 1px solid red;
 69             text-align: center;
 70         }
 71 
 72         #shift{
 73             margin-top: 10px;
 74             margin-left: 10px;
 75             float: left;
 76             height: 50px;
 77             width: 100px;
 78             border: 1px solid red;
 79             text-align: center;
 80         }
 81 
 82         #space{
 83             margin-top: 10px;
 84             margin-left: 10px;
 85             float: left;
 86             height: 50px;
 87             width: 370px;
 88             border: 1px solid red;
 89             text-align: center;
 90         }
 91 
 92         #insert{
 93             margin-top: 10px;
 94             margin-left: 10px;
 95             float: left;
 96             border: 1px solid red;
 97             text-align: center;
 98             font-size: small;
 99         }
100 
101         #delete{
102             margin-top: 10px;
103             margin-left: 10px;
104             float: left;
105             border: 1px solid red;
106             text-align: center;
107             font-size: small;
108         }
109 
110         #backspace{
111             margin-top: 10px;
112             margin-left: 10px;
113             float: left;
114             height: 50px;
115             width: 100px;
116             border: 1px solid red;
117             text-align: center;
118             font-size: small;
119         }
120 
121         #ctrl{
122             margin-top: 10px;
123             margin-left: 10px;
124             float: left;
125             height: 50px;
126             width: 60px;
127             border: 1px solid red;
128             text-align: center;
129             font-size: xx-small;
130         }
131 
132         #meta{
133             margin-top: 10px;
134             margin-left: 10px;
135             float: left;
136             border: 1px solid red;
137             text-align: center;
138             font-size: small;
139         }
140     
141         #up{
142             margin-top: 10px;
143             margin-left: 10px;
144             float: left;
145             border: 1px solid red;
146             text-align: center;
147             font-size: small;
148             word-break: break-all;
149         }
150 
151         #left{
152             margin-top: 10px;
153             margin-left: 10px;
154             float: left;
155             border: 1px solid red;
156             text-align: center;
157             font-size: small;
158             word-break: break-all;
159         }
160         
161         #down{
162             margin-top: 10px;
163             margin-left: 10px;
164             float: left;
165             border: 1px solid red;
166             text-align: center;
167             font-size: small;
168             word-break: break-all;
169         }
170 
171         #right{
172             margin-top: 10px;
173             margin-left: 10px;
174             float: left;
175             border: 1px solid red;
176             text-align: center;
177             font-size: small;
178             word-break: break-all;
179         }
180 
181         .empty{
182             float: left;
183             border: 1px solid white;
184         }

 

HTML代码:

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>键盘按键测试2.0版</title>
 8 </head>
 9 <body>
10 
11         <h1>键盘按键测试</h1>
12         <p>注:测试前请先按F11,先让浏览器处于全屏状态下,否则当按下TAB键时,会让当前页面失去焦点,影响后面使用。</p>
13         <p>如果在非全屏下,失去焦点时,在任意红框内点下鼠标即可重新获得焦点。</p>
14     <div id="all">
15         <!--div使用键盘监听事件时,要设置tabindex=1才可以被监听
16         -->
17         <div id="key" tabindex="1">
18             <a id="esc">ESCAPE</a><a>F1</a><a>F2</a><a>F3</a><a>F4</a><a>F5</a><a>F6</a><a>F7</a><a>F8</a><a>F9</a><a>F10</a><a>F11</a><a>F12</a><a id="pause">PAUSE</a><a id="insert">INSERT</a><a id="delete">DELETE</a>
19             <a>`</a><a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a><a>8</a><a>9</a><a>0</a><a>-</a><a>=</a><a id="backspace">BACKSPACE</a><a class="empty"></a>
20             <a id="tab">TAB</a><a>Q</a><a>W</a><a>E</a><a>R</a><a>T</a><a>Y</a><a>U</a><a>I</a><a>O</a><a>P</a><a>[</a><a>]</a><a class="empty"></a><a class="empty"></a>
21             <a id="cap">CAPSLOCK</a><a>A</a><a>S</a><a>D</a><a>F</a><a>G</a><a>H</a><a>J</a><a>K</a><a>L</a><a>;</a><a>'</a><a>\</a><a id="enter">ENTER</a>
22             <a id="shift">SHIFT</a><a>Z</a><a>X</a><a>C</a><a>V</a><a>B</a><a>N</a><a>M</a><a>,</a><a>.</a><a>/</a><a id="shift">SHIFT</a><a id="up">ARROWUP</a><a class="empty"></a>
23             <a id="ctrl">CONTROL</a><a id="meta">META</a><a>ALT</a><a id="space"> </a><a>META</a><a>ALT</a><a id="ctrl">CONTROL</a><a id="left">ARROWLEFT</a><a id="down">ARROWDOWN</a><a id="right">ARROWRIGHT</a>
24         </div>
25     </div>
26 </body>
27 </html>

 

JavaScript代码:

 1         /*
 2         名称:键盘测试2.0版
 3         功能:测试键盘上按键被按下,同时页面上显示的对应键产生变化
 4         日期:2022年8月30日22:07
 5         作者:猫降龙
 6         */
 7 
 8         //获取ID
 9         let tagKey=document.getElementById("key");
10         //获取a元素
11         //let tagA=tagKey.getElementsByTagName("a");
12         tagKey.focus();
13         //event是对像类型,写成e也是同样效果
14         tagKey.onkeydown=function(event){
15         //注:打印event会发现里面有一个key属性
16         //打印event.key是监控键盘按下的是什么键
17         //console.log(event.key);
18                 
19         //key是event对像中的属性
20         //let {key}=event;
21         //console.log(key);
22         //将按下的键名(event中的key属性)赋值给strKey
23         let strKey=event.key;
24         //console.log("你已按下该键"+strKey);
25         //console.log(strKey.toUpperCase());
26         //获取所有a标签,不包含内容
27         let tagKey=document.querySelectorAll("a");
28         //获取的所有a标签,用forEach来循环其中的内容
29         tagKey.forEach(a=>{
30 
31             //如果按下的英文键名转为大写等于a标签的内容,则将其改为红色背景
32             if(a.innerHTML===strKey.toUpperCase()){
33                 //a.setAttribute("style","background-color:red");
34                 a.style.backgroundColor="red";
35                 //a.style.color="red";
36             }
37         });
38         }
39 
40         //每隔500毫秒获取一次焦点
41         setInterval(() => {
42             tagKey.focus();
43         }, 500);

 

posted on 2022-09-02 15:40  猫降龙  阅读(202)  评论(0)    收藏  举报