|
2 | 2 |
|
3 | 3 | ## 鼠标事件的种类
|
4 | 4 |
|
5 |
| -鼠标事件指与鼠标相关的事件,继承了`MouseEvent`接口。具体的事件主要有以下一些。 |
| 5 | +鼠标事件主要有下面这些,所有事件都继承了`MouseEvent`接口(详见后文)。 |
| 6 | + |
| 7 | +(1)点击事件 |
| 8 | + |
| 9 | +鼠标点击相关的有四个事件。 |
6 | 10 |
|
7 | 11 | - `click`:按下鼠标(通常是按下主按钮)时触发。
|
8 | 12 | - `dblclick`:在同一个元素上双击鼠标时触发。
|
9 | 13 | - `mousedown`:按下鼠标键时触发。
|
10 | 14 | - `mouseup`:释放按下的鼠标键时触发。
|
| 15 | + |
| 16 | +`click`事件可以看成是两个事件组成的:用户在同一个位置先触发`mousedown`,再触发`mouseup`。因此,触发顺序是,`mousedown`首先触发,`mouseup`接着触发,`click`最后触发。 |
| 17 | + |
| 18 | +双击时,`dblclick`事件则会在`mousedown`、`mouseup`、`click`之后触发。 |
| 19 | + |
| 20 | +(2)移动事件 |
| 21 | + |
| 22 | +鼠标移动相关的有五个事件。 |
| 23 | + |
11 | 24 | - `mousemove`:当鼠标在一个节点内部移动时触发。当鼠标持续移动时,该事件会连续触发。为了避免性能问题,建议对该事件的监听函数做一些限定,比如限定一段时间内只能运行一次。
|
12 | 25 | - `mouseenter`:鼠标进入一个节点时触发,进入子节点不会触发这个事件(详见后文)。
|
13 | 26 | - `mouseover`:鼠标进入一个节点时触发,进入子节点会再一次触发这个事件(详见后文)。
|
14 | 27 | - `mouseout`:鼠标离开一个节点时触发,离开父节点也会触发这个事件(详见后文)。
|
15 | 28 | - `mouseleave`:鼠标离开一个节点时触发,离开父节点不会触发这个事件(详见后文)。
|
16 |
| -- `contextmenu`:按下鼠标右键时(上下文菜单出现前)触发,或者按下“上下文菜单键”时触发。 |
17 |
| -- `wheel`:滚动鼠标的滚轮时触发,该事件继承的是`WheelEvent`接口。 |
18 |
| - |
19 |
| -`click`事件指的是,用户在同一个位置先完成`mousedown`动作,再完成`mouseup`动作。因此,触发顺序是,`mousedown`首先触发,`mouseup`接着触发,`click`最后触发。 |
20 |
| - |
21 |
| -`dblclick`事件则会在`mousedown`、`mouseup`、`click`之后触发。 |
22 | 29 |
|
23 | 30 | `mouseover`事件和`mouseenter`事件,都是鼠标进入一个节点时触发。两者的区别是,`mouseenter`事件只触发一次,而只要鼠标在节点内部移动,`mouseover`事件会在子节点上触发多次。
|
24 | 31 |
|
|
27 | 34 | <ul>
|
28 | 35 | <li>item 1</li>
|
29 | 36 | <li>item 2</li>
|
30 |
| - <li>item 3</li> |
| 37 | + <li>item 3</li> |
31 | 38 | </ul>
|
32 | 39 | */
|
33 | 40 |
|
@@ -62,7 +69,7 @@ ul.addEventListener('mouseover', function (event) {
|
62 | 69 | <ul>
|
63 | 70 | <li>item 1</li>
|
64 | 71 | <li>item 2</li>
|
65 |
| - <li>item 3</li> |
| 72 | + <li>item 3</li> |
66 | 73 | </ul>
|
67 | 74 | */
|
68 | 75 |
|
@@ -90,19 +97,24 @@ ul.addEventListener('mouseout', function (event) {
|
90 | 97 |
|
91 | 98 | 上面代码中,在父节点内部离开子节点,不会触发`mouseleave`事件,但是会触发`mouseout`事件。
|
92 | 99 |
|
93 |
| -## MouseEvent 接口概述 |
| 100 | +(3)其他事件 |
| 101 | + |
| 102 | +- `contextmenu`:按下鼠标右键时(上下文菜单出现前)触发,或者按下“上下文”菜单键时触发。 |
| 103 | +- `wheel`:滚动鼠标的滚轮时触发,该事件继承的是`WheelEvent`接口。 |
| 104 | + |
| 105 | +## MouseEvent 接口 |
94 | 106 |
|
95 | 107 | `MouseEvent`接口代表了鼠标相关的事件,单击(click)、双击(dblclick)、松开鼠标键(mouseup)、按下鼠标键(mousedown)等动作,所产生的事件对象都是`MouseEvent`实例。此外,滚轮事件和拖拉事件也是`MouseEvent`实例。
|
96 | 108 |
|
97 |
| -`MouseEvent`接口继承了`Event`接口,所以拥有`Event`的所有属性和方法。它还有自己的属性和方法。 |
| 109 | +`MouseEvent`接口继承了`Event`接口,所以拥有`Event`的所有属性和方法,并且还提供鼠标独有的属性和方法。 |
98 | 110 |
|
99 |
| -浏览器原生提供一个`MouseEvent`构造函数,用于新建一个`MouseEvent`实例。 |
| 111 | +浏览器原生提供一个`MouseEvent()`构造函数,用于新建一个`MouseEvent`实例。 |
100 | 112 |
|
101 | 113 | ```javascript
|
102 | 114 | var event = new MouseEvent(type, options);
|
103 | 115 | ```
|
104 | 116 |
|
105 |
| -`MouseEvent`构造函数接受两个参数。第一个参数是字符串,表示事件名称;第二个参数是一个事件配置对象,该参数可选。除了`Event`接口的实例配置属性,该对象可以配置以下属性,所有属性都是可选的。 |
| 117 | +`MouseEvent()`构造函数接受两个参数。第一个参数是字符串,表示事件名称;第二个参数是一个事件配置对象,该参数可选。除了`Event`接口的实例配置属性,该对象可以配置以下属性,所有属性都是可选的。 |
106 | 118 |
|
107 | 119 | - `screenX`:数值,鼠标相对于屏幕的水平位置(单位像素),默认值为0,设置该属性不会移动鼠标。
|
108 | 120 | - `screenY`:数值,鼠标相对于屏幕的垂直位置(单位像素),其他与`screenX`相同。
|
@@ -384,3 +396,4 @@ var wheelEvent = new WheelEvent(type, options);
|
384 | 396 | - `WheelEvent.deltaY`:数值,表示滚轮的垂直滚动量。
|
385 | 397 | - `WheelEvent.deltaZ`:数值,表示滚轮的 Z 轴滚动量。
|
386 | 398 | - `WheelEvent.deltaMode`:数值,表示上面三个属性的单位,`0`是像素,`1`是行,`2`是页。
|
| 399 | + |
0 commit comments