我们将鼠标事件分为两类:简单事件和复杂事件
简单事件的触发顺序没什么好说的,我们来看看复杂事件的触发顺序:
从①中可以看到鼠标点击时的触发事件过程: mousedown -> mouseup -> click, which属性值为1(这个后面讨论)。从②中可以看到右键菜单事件的触发过程: mousedown -> mouseup -> contextmenu,which属性值为3。从③中可以看到双击事件的触发过程: mousedown -> mouseup -> click -> mousedown -> mouseup -> click -> dbclick, which属性值为1。④是使用鼠标滚轮点击时(是的,鼠标滚轮也是也可以点击的!)的触发过程: mousedown -> mouseup,which属性值为2。这上面,which我们猜猜也能知道代表着啥,即值1、2、3分别代表鼠标左键、中键(滚轮)、右键。
在Mac上通常是用Cmd替换Ctrl,对于不同的操作系统,我们可以在JS代码中通过if (event.ctrlKey || event.metaKey)判断来让所有用户都有一致性的体验。 2. 很多用户都有在新的标签页中打开链接的习惯,我们可以将<a>标签的样式设置成<button>的样子,这样用户就可以在对应的地方使用在新的标签页中打开链接的功能,原生的<button>标签是没有该功能的。
例子:
<ul id="menu" class="menu"> <li><a href="/html">HTML</a></li> <li><a href="/javascript">JavaScript</a></li> <li><a href="/css">CSS</a></li> </ul>对应的样式:
.menu li { display: inline-block; margin: 0; } .menu > li a { display: inline-block; margin: 0 2px; outline: none; text-align: center; text-decoration: none; font: 14px/100% sans-serif; padding: .5em 2em .55em; text-shadow: 0 1px 1px rgba(0, 0, 0, .3); border-radius: .5em; box-shadow: 0 1px 2px rgba(0, 0, 0, .2); color: #d9eef7; border: solid 1px #0076a3; background: #0095cd; } .menu > li:hover a { text-decoration: none; background: #007ead; }效果:
参考:
https://javascript.info/default-browser-actionhttps://javascript.info/mouse-events-basics#complex-events