滑鼠的拖拽事件
拖拽的流程:
(1)
onmousedown
:當滑鼠在被拖拽元素上按下時,開始拖拽;
(2)
onmousemove
:當滑鼠移動時被拖拽元素跟随滑鼠移動;
(3)
onmouseup
:當滑鼠松開時,被拖拽元素固定在目前位置。
滑鼠的滾輪事件
onmousewheel
:滑鼠滾輪滾動的事件,會在滾輪滾動時觸發。但是火狐不支援該屬性。
DOMMouseScroll
:在火狐中需要使用 DOMMouseScroll 來綁定滾動事件。注意該事件需要通過addEventListener()函數來綁定。
鍵盤事件
事件名
onkeydown
:按鍵被按下。
onkeyup
:按鍵被松開。
注意:
- 如果一直按着某一個按鍵不松手,那麼,
事件會一直觸發。此時,松開鍵盤,onkeydown
事件會執行一次。onkeyup
- 當
連續觸發時,第一次和第二次之間會間隔稍微長一點,後續的間隔會非常快。這種設計是為了防止誤操作的發生。onkeydown
鍵盤事件一般都會綁定給一些可以擷取到焦點的對象或者是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
事件對象裡面還提供了以下幾個屬性:
- altKey
- ctrlKey
- shiftKey
上面這三個屬性,可以用來判斷
alt
、
ctrl
、和
shift
是否被按下。如果按下則傳回true,否則傳回false。代碼舉例:
<body>
<script>
document.onkeydown = function(event) {
event = event || window.event;
console.log('qianguyihao:鍵盤按下了');
// 判斷y和ctrl是否同時被按下
if (event.ctrlKey && event.keyCode === 89) {
console.log('ctrl和y都被按下了');
}
};
</script>
</body>
複制
舉例:input 文本框中,禁止輸入數字。代碼實作:
<body>
<input type="text" />
<script>
//擷取input
var input = document.getElementsByTagName('input')[0];
input.onkeydown = function(event) {
event = event || window.event;
//console.log('qianguyihao:' + event.keyCode);
//數字 48 - 57
//使文本框中不能輸入數字
if (event.keyCode >= 48 && event.keyCode <= 57) {
//在文本框中輸入内容,屬于onkeydown的預設行為
return false; // 如果在onkeydown中取消了預設行為,則輸入的内容,不會出現在文本框中
}
};
</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">
// 使div可以根據不同的方向鍵向不同的方向移動
/*
* 按左鍵,div向左移
* 按右鍵,div向右移
* ...
*/
//為document綁定一個按鍵按下的事件
document.onkeydown = function(event) {
event = event || window.event;
//定義一個變量,來表示移動的速度
var speed = 10;
//當使用者按了ctrl以後,速度加快
if (event.ctrlKey) {
console.log('smyhvae ctrl');
speed = 20;
}
/*
* 37 左
* 38 上
* 39 右
* 40 下
*/
switch (event.keyCode) {
case 37:
//alert("向左"); left值減小
box1.style.left = box1.offsetLeft - speed + 'px'; // 在初始值的基礎之上,減去 speed 大小
break;
case 39:
//alert("向右");
box1.style.left = box1.offsetLeft + speed + 'px';
break;
case 38:
//alert("向上");
box1.style.top = box1.offsetTop - speed + 'px';
break;
case 40:
//alert("向下");
box1.style.top = box1.offsetTop + speed + 'px';
break;
}
};
</script>
</body>
</html>
複制