title: 42-键盘事件
publish: true
鼠标的拖拽事件
拖拽的流程:
(1)onmousedown
:当鼠标在被拖拽元素上按下时,开始拖拽;
(2)onmousemove
:当鼠标移动时被拖拽元素跟随鼠标移动;
(3)onmouseup
:当鼠标松开时,被拖拽元素固定在当前位置。
鼠标的滚轮事件
onmousewheel
:鼠标滚轮滚动的事件,会在滚轮滚动时触发。但是火狐不支持该属性。
DOMMouseScroll
:在火狐中需要使用 DOMMouseScroll 来绑定滚动事件。注意该事件需要通过addEventListener()函数来绑定。
键盘事件
事件名
onkeydown
:按键被按下。
onkeyup
:按键被松开。
注意:
键盘事件一般都会绑定给一些可以获取到焦点的对象或者是document。代码举例:
<body> <script> document.onkeydown = function(event) { event = event || window.event; console.log('qianguyihao 键盘按下了'); };
document.onkeyup = function() { console.log('qianguyihao 键盘松开了'); }; </script>
<input type="text" /> </body>
|
判断哪个键盘被按下
可以通过event
事件对象的keyCode
来获取按键的编码。
此外,event
事件对象里面还提供了以下几个属性:
上面这三个属性,可以用来判断alt
、ctrl
、和shift
是否被按下。如果按下则返回true,否则返回false。代码举例:
<body> <script> document.onkeydown = function(event) { event = event || window.event; console.log('qianguyihao:键盘按下了');
if (event.ctrlKey && event.keyCode === 89) { console.log('ctrl和y都被按下了'); } }; </script> </body>
|
举例:input 文本框中,禁止输入数字。代码实现:
<body> <input type="text" />
<script> var input = document.getElementsByTagName('input')[0];
input.onkeydown = function(event) { event = event || window.event;
if (event.keyCode >= 48 && event.keyCode <= 57) { return false; } }; </script> </body>
|
举例:通过键盘的方向键,移动盒子
代码实现:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title></title> <style type="text/css"> #box1 { width: 100px; height: 100px; background-color: red; position: absolute; } </style> </head> <body> <div id="box1"></div>
<script type="text/javascript">
document.onkeydown = function(event) { event = event || window.event;
var speed = 10;
if (event.ctrlKey) { console.log('smyhvae ctrl'); speed = 20; }
switch (event.keyCode) { case 37: box1.style.left = box1.offsetLeft - speed + 'px'; break; case 39: box1.style.left = box1.offsetLeft + speed + 'px'; break; case 38: box1.style.top = box1.offsetTop - speed + 'px'; break; case 40: box1.style.top = box1.offsetTop + speed + 'px'; break; } }; </script> </body> </html>
|
上方代码,待改进的地方:
(1)移动盒子时,如果要加速,需要先按方向键
,再按Ctrl键
。
(2)首次移动盒子时,动作较慢。后续如果学习了定时器相关的内容,可以再改进。
我的公众号
想学习更多技能?不妨关注我的微信公众号:千古壹号(id:qianguyihao
)。
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外: