事件对象(event)
什么是事件对象?
- 事件对象就是当你触发了一个事件以后,对该事件的一些描述信息
- 每一个事件都会有一个对应的对象来描述这些信息,我们就把这个对象叫做事件对象
例如:
-
你触发一个点击事件的时候,你点在哪个位置了,坐标是多少
-
你触发一个键盘事件的时候,你按的是哪个按钮
-
…
鼠标触发事件的话,会得到鼠标的相关数据,
键盘触发事件的话,会得到键盘的相关数据,键盘事件只有可以获取焦点的元素可以使用
事件对象的使用
事件触发时就会自动产生这个事件对象,并且会自动跟随事件函数的参数传递,会当做事件函数的实参传递给函数内部,所以要使用事件对象则给事件绑定的函数需有一个形参,这个形参来接受事件对象。(旧版本中,基本上是通过浏览器中的window对象寻找event,再获取相关对象)
鼠标/键盘事件对象
属性 | 描述 |
---|---|
e.altKey | 返回当事件被触发时,“ALT” 是否被按下。 |
e.button | 返回当事件被触发时,哪个鼠标按钮被点击。 |
e.clientX | 返回当事件被触发时,鼠标相对于浏览器窗口可视区域的X坐标 |
e.clientY | 返回当事件被触发时,鼠标相对于浏览器窗口可视区域的Y坐标 |
e.pageX | 鼠标相对于当前Document文档的X坐标,IE9以上 |
e.pageY | 鼠标相对于当前Document文档的Y坐标,IE9以上 |
e.ctrlKey | 返回当事件被触发时,“CTRL” 键是否被按下。 |
e.Location | 返回按键在设备上的位置 |
e.charCode | 返回onkeypress事件触发键值的字母代码。 |
e.key | 键盘事件键盘按下时按键的键值 |
e.keyCode | 键盘事件键盘按下时按键的大写字母的ASCII码 |
e.which | 返回onkeypress事件触发的键的值的字符代码,或者 onkeydown 或 onkeyup 事件的键的代码。 |
e.metaKey | 返回当事件被触发时,“meta” 键是否被按下。 |
e.relatedTarget | 返回与事件的目标节点相关的节点。 |
e.screenX | 返回当某个事件被触发时,鼠标相对于电脑屏幕的X坐标 |
e.screenY | 返回当某个事件被触发时,鼠标相对于电脑屏幕的Y坐标 |
e.shiftKey | 返回当事件被触发时,“SHIFT” 键是否被按下。 |
e.target | 返回触发事件的对象(标准) |
e.srcElement | 返回触发事件的对象(非标准) |
e.type | 返回触发事件的事件类型 |
e.cancelBubble | 该属性阻止事件冒泡(非标准) |
e.returnValue | 该属性阻止默认事件(非标准) |
e.preventDefault() | 该方法阻止默认事件(标准) |
e.stopPropagation() | 该方法阻止事件冒泡(标准) |
注意:e.target是事件触发的元素,this是事件的绑定元素,两者不能混淆!
实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>遮罩界面窗口移动</title>
<!-- css样式 -->
<style>
* {
margin: 0px;
padding: 0px;
}
.div {
width: 100%;
height: 555px;
background-color: rgba(156, 159, 161, 0.253);
display: none;
padding-top: 200px;
position: relative;
}
.box {
width: 300px;
height: 125px;
text-align: center;
padding-top: 25px;
margin: 0 auto;
background-color: skyblue;
border: 1px solid black;
position: absolute;
left: 500px;
}
button {
margin-top: 100px;
margin-left: 700px;
}
</style>
</head>
<body>
<!-- 点击登录按钮 -->
<button>点击登录</button>
<!-- 遮罩界面窗口 -->
<div class="div">
<div class="box">
用户名:<input type="text" placeholder="请输入用户名">
<br>
<br>
密 码:<input type="password" placeholder="请输入密码">
<br>
<br>
<input type="button" value="点击登录">
</div>
</div>
<!-- javascript设置效果 -->
<script>
// 预加载
window.onload = function () {
// 获取页面元素
var btn = document.querySelector("button")
var div = document.querySelector(".div")
var box = document.querySelector(".box")
// 为按钮添加点击事件
btn.onclick = function () {
btn.style.display = "none"
div.style.display = "block"
}
// 设置遮罩页面跟随鼠标的位置进行移动
box.addEventListener("mousedown", fun)
function fun(e) {
var num = e.clientX - box.offsetLeft
var nume = e.clientY - box.offsetTop
document.onmousemove = function (e) {
var left = e.clientX - num;
var top = e.clientY - nume;
box.style.left = left + 'px';
box.style.top = top + 'px';
}
// 设置鼠标松开以后事件释放
document.onmouseup = function () {
this.onmousemove = null;
this.onmouseup = null;
}
}
}
</script>
</body>
</html>