windows:Interaction/mouse-and-points
出自UXGuide.net
鼠标与指针
Mouse and Pointers
目录 |
“鼠标”是在 Microsoft® Windows® 中用来与对象进行交互的主要输入设备。鼠标一词也泛指其他指点设备,例如:轨迹球、触摸板、笔记本电脑内置的指点杆、Windows Tablet 中使用触摸技术的手写笔、以及对于有触摸屏的电脑,甚至包括用户的手指等。
物理地移动鼠标会移动屏幕上的图形“指针(pointer)”(也被称为“光标(cursor)”)。鼠标指针有许多形状用来指示其当前的行为。
典型的鼠标指针
现代鼠标通常有一个主按钮(通常是左键)、一个辅助按钮(通常是右键)和一个位于两者之间的鼠标滚轮。通过定位指针和点击鼠标上的主辅按钮,用户可以选择对象并对其执行操作。对于大多数交互来说,按下鼠标按钮表示选中目标,释放按钮则执行操作。
除了忙碌指针以外,所有的鼠标指针都有一个单像素的“热点(hot spot)”,用于定义鼠标指针在屏幕上的确切位置。热点决定了操作会影响到哪个对象。对象也定义有“热区(hot zone)”,表示热点位于哪些位置时被认为是在该对象之上。通常,热区与对象的边界是一致的,但为了便于操作,热区也可能会更大一些。
“插入符(caret)”是用户在文本框或其他文本编辑器中打字时出现的闪烁竖线。插入符与鼠标指针无关,但当用户键入文本时,Windows 默认会隐藏鼠标指针。
插入符
注:与无障碍访问(辅助特性)相关的设计规范请参考各自相应的章节。
设计理念
鼠标是直观的
鼠标是一个成功的输入设备,因为对于人的手来说易于使用。基于指针的交互也很成功,因为它很直观,而且可以用于各种丰富的体验。
设计良好的用户界面对象被称为具有良好的功能可见性(affordance),即对象的视觉及行为属性对其应当如何使用的暗示。鼠标指针代替手,让用户能够像操作真实物体一样与屏幕上的对象进行交互。人类天生能够理解如何使用人手,所以如果某样东西看上去能够被按下的话,我们就会试着去按它;如果看上去像是能抓起来,我们就会试着去抓。因此,用户只要看看试试就能够明白如何使用那些功能可见性很强的对象。
这些对象的功能可见性较强。
相反,功能可见性较弱的对象则较难理解。这类对象往往需要标签或说明文本来加以解释。
这些对象的功能可见性较差。
鼠标使用的有些方面不够直观
右击、双击、以及按住 Shift 或 Ctrl 键点击是不够直观的三种鼠标操作,因为在真实世界中没有对应的操作。与键盘快捷键和访问键不同,这些鼠标操作通常不会在 UI 的任何位置进行说明。这也意味着右击、双击和键盘修饰键不应当用于完成基本的任务,尤其是对于新用户。这也意味着这些高级操作必须具有一致、可预测的行为,以实现高效使用。
最重要的两点:
- 仅在用于高级用户的高级任务中使用高级鼠标操作。
- 为高级鼠标操作指定统一、可预测的行为,以实现高效使用。
单击还是双击?
双击在 Windows 桌面上使用得非常广泛,以至于看起来不像是高级操作。例如,在 Windows Explorer 的文件面板中打开文件夹、程序或者文档都是通过双击来完成的。在 Windows 桌面上打开快捷方式也是通过双击完成的。相反,在开始菜单中打开文件夹或程序则只须单击,在快速启动栏中启动程序也是如此。
可以选中的对象通过单击来进行选定,因此它们需要双击来打开,而不可选中的对象则只须单击即可打开。很多用户不能理解这种差别(单击程序图标就是单击程序图标,不是吗?)结果是,有些用户不断地单击图标,直到目的达到为止。
直接操纵
直接通过鼠标操作对象被称为直接操纵(direct manipulation)。指向、单击、选择、移动、调整大小、分割、滚动、平移以及缩放是最常见的直接操纵。相反,通过属性窗口或其他对话框来操作对象则可以被称为是间接操纵。
标准鼠标按钮操作
标准鼠标操作基于多个因素,包括按下的鼠标键、点击的次数、点击过程中的位置、以及是否有键盘修饰键按下。下面是这些因素如何对操作产生影响的总结:
- 对于大多数对象来说,左键双击会执行左键单击以及默认命令。默认命令应当在快捷菜单中定义。
- 对于有些可以选中的对象,每次单击会扩展单击的效果。例如,单击文本框会设置输入位置,双击则选定一个单词,三击则选中整个句子或段落。
- 右击用于显示对象的快捷菜单。
- 保持鼠标不动时,指向则变为悬停。
- 保持鼠标不动时,按下鼠标键表示单击以及选择单个对象。移动鼠标则表示移动、更改大小、分割、拖动、以及选择多个对象。
- Shift 键用于连续扩展选区。
- Ctrl 键通过切换被单击项的选择状态来扩展选区,而不会影响其他对象的选择。
常见鼠标指针形状
下表给出了常见的鼠标指针形状,及其交互和效果。
简单鼠标交互
| 简单操作 | 交互 | 典型效果 |
|---|---|---|
| 指向(point) | 将鼠标指针移至某对象上,不按下任何鼠标键。 | 目标显示其悬停状态以动态效果。 |
| 悬停(hover) | 将鼠标指针移至某对象上,不按下任何鼠标键,并保持不动至少一秒。 | 目标显示其工具提示、信息提示或其他等价信息。 |
| 单击(click) | 将鼠标指针移至某个不可选中的对象上,在不移动鼠标的前提下按下并松开鼠标键。单击在放开鼠标键时生效,以使用户有机会通过移开鼠标来取消该单击操作。因此,按下鼠标仅仅是选定目标。 | 单击主按钮将激活对象,双击主按钮则会激活对象并执行默认命令。辅助按钮则用于显示对象的快捷菜单。 |
| 选中(select) | 将鼠标指针移至某个可选中的对象上,按下并松开鼠标键。 | 单击主按钮将选中对象。如果用户拖放鼠标,则可选中连续范围内的对象。双击主按钮,则选中对象并执行默认命令。 对于文本,直接单击主按钮将设置插入点位置,再次单击则会选中插入点处的单词,第三次单击则选中整个句子或者段落。 |
| 按下(press) | 将鼠标指针移至某对象上,按下鼠标键不放。 | 对于自动重复功能(比如按住滚动箭头以持续滚动),则会重复激活。否则则表示移动、调整大小、分割或拖动的开始,除非又松开鼠标且中途没有移动。 |
| 滚动(wheel) | 移动鼠标滚轮 | 按鼠标滚轮移动的方向纵向滚动窗口。 |
鼠标指针
| 形状 | 名称 | 何时使用 |
|---|---|---|
| 普通选择 | 用于大多数对象。 |
| 链接选择 | 用于文本或图形链接,因为它们的功能可见性较差。 |
| 文本选择 | 用于文本以指示字符之间的位置。 |
| 精确选择 | 用于图形及其他二维操作。 |
复合鼠标交互
| 复合操作 | 交互 | 典型效果 | 鼠标指针 |
|---|---|---|---|
|
移动(move) |
如果移动是一个模式的话(通过命令进入),则进入该模式,将鼠标指针放在可移动的对象上,按下鼠标键并移动鼠标,然后松开鼠标键。在这种情况下,鼠标指针会改变形状来表明所处的模式。
|
对象按照鼠标指针运动的方向移动。 |
移动
用于向任意方向移动窗口。
用于向任意方向移动窗口内的对象。 |
|
调整大小(resize) |
将鼠标指针放在可缩放边框或调整大小句柄上,按下鼠标键并移动鼠标,然后松开鼠标按钮。 |
对象按照鼠标指针运动的方向改变大小。 |
垂直和水平调整大小
用于单方向调整大小。
用于两个方向同时调整大小。
用于在网格中调整行或列的大小。 |
|
分割(split) |
将鼠标指针放在分隔条上,按下鼠标键并移动鼠标,然后松开鼠标键。 |
分割面板的边框按照鼠标指针移动的方向移动。 |
窗口分割
用于垂直或水平调整分割面板的大小。 |
|
拖放(drag and drop) |
将鼠标指针放在可拖放的对象上,按下鼠标键并移动鼠标至拖放目标上,然后松开鼠标键。 |
对象被移动或复制到拖放目标。 |
正常选择
在有效拖放目标上方时使用,可能还具有信息提示以指明具体的效果。
用于指明不是有效拖放目标的位置。 |
活动指示
下表显示了当正在执行需要较长时间才能完成的操作时,用户看到的鼠标指针。
| 形状 | 名称 | 何时使用 |
|---|---|---|
| 忙碌指针 | 用于等待窗口恢复响应。 |
| 后台操作指针 | 用于当有任务在后台执行时进行指向、点击、按下或选择操作。 |
自定义鼠标形状
允许用户进行多种非标准直接操纵的应用程序提供了带直接操纵模式的调板窗口。
在这个示例中,画图程序带有使用直接操纵模式的调板窗口。
手形指针
文本和图形链接使用手形或称“链接选择”指针(一只伸出食指的手
),因为它们的功能可见性很低。虽然链接可能具有其他视觉线索来表明它们是链接(比如下划线和特殊的位置),但是当悬停时显示手形指针是链接的决定性标志。
为了避免混淆,切勿将手形指针用作其他用途。例如,命令按钮已经具有很强的功能可见性了,因此无须再使用手形指针。手形指针必须仅仅用于表示“此处是链接”。
费茨法则(Fitts' Law)
费茨法则是图形用户界面设计人机工程学中的著名原则,其基本思想是:
- 目标越远,鼠标到目标所花费的时间就越长。
- 目标越小,鼠标到目标所花费的时间就越长。
也就是说,尺寸大的目标比较好。不过要确保整个目标区域都是可点击的。
错误:
正确:
在正确的示例中,整个目标都是可点击的。
你可以在当目标被指向时动态更改其尺寸以使其更容易到达。
在这个示例中,当用户指向目标时,目标会变大以使其更容易到达。
靠近目标也很好。将可点击的项放在靠近他们最有可能被使用的位置。
错误:
在这个示例中,调色板离有可能使用它们的位置太远。
考虑这样一点,用户当前的鼠标位置是最容易接近的目标,很容易就可以到达。因此,快捷菜单很好地利用了费茨法则,Microsoft Office 中的迷你工具栏以及智能标记也是如此。
当前鼠标位置永远是最容易到达的位置。
而且,当决定对象尺寸的时候考虑其他的输入设备。传统的 16x16 像素图标是适合于所有输入设备的最小尺寸。例如,15x9 像素的微调控件按钮太小,在 Windows Tablet 以及触摸技术下使用手写笔则会使用困难。
没有鼠标的情况
并非所有 Windows 环境都有鼠标。例如,展台设备很少会有鼠标,而通常是具有触摸屏。这意味着用户可以进行类似左键单击和拖放的简单操作。但是,他们无法悬停、右击或双击。这种情况很容易进行专门设计,因为这些限制往往事先能够知晓。
使用鼠标需要健全的运动技能,因此,并非所有用户都能够使用鼠标。要使你的软件能够被更大范围内的受众使用,确保那些需要健全运动技能的操作并非必不可少的,且可以使用键盘来代替完成。
更多信息和设计规范,参见无障碍访问(辅助特性)。
设计规范
单击的功能可见性
- 切勿非要用户单击之后才能确定对象是否可以被点击。用户必须能够仅通过视觉观察即可确定是否可以被点击。
- 仅为文本或图形链接使用手形(或称“链接选择”)鼠标指针。否则,用户需要通过单击来确定它们是否是链接。
标准鼠标键操作
下表总结了适合于大多数情况的鼠标键操作:
| 操作 | 效果 |
|---|---|
| 悬停 | 目标显示其工具提示、信息提示或等价物。 |
| 左键单击 | 激活或选中对象。对于文本,设置插入点。 |
| 右键单击 | 选中对象并显示其快捷菜单。 |
| 左键双击 | 激活或选中对象,并执行默认命令。对于文本,选择位于插入点的单词(第三次点击则会选中句子或段落)。 |
| 右键双击 | 与右键单击相同。 |
| Shift 加左键单击 | 对于可选择的对象,连续扩展其选区。否则,与左键单击类似。例如,在画图中,按住 Shift 键绘制椭圆则可绘制正圆。 |
| Shift 加右键单击 | 与 Shift 加左键单击相同。 |
| Shift 加左键双击 | 与 Shift 加左键单击相同,并对整个选区执行默认命令。 |
| Shift 加右键双击 | 与 Shift 加左键单击相同。 |
| Ctrl 加左键单击 | 对于可选择对象,通过切换被单击项的选择状态来扩展选区,而不会影响其他对象的选择(即允许非连续选区)。否则,与左键单击相同。 |
| Ctrl 加右键单击 | 与 Ctrl 加左键单击相同。 |
| Ctrl 加左键双击 | 与 Ctrl 加左键单击相同,并对整个选区执行默认命令。 |
| Ctrl 加右键双击 | 与 Ctrl 加左键单击相同。 |
鼠标交互
- 单击目标应不小于 16x16 像素以能够便于任何输入设备点击。考虑在用户指向较小目标时动态改变其尺寸以使其更容易到达。
- 错误:
-
- 在这个示例中,微调控件按钮太小,使用手写笔则难以操作。
- 分隔条应至少具有五像素宽,以便于用户通过任何输入设备进行点击。考虑在用户指向较小目标时动态改变其尺寸以使其更容易到达。
- 错误:
-
- 在这个示例中,Windows Explorer 导航窗格中的分隔条太窄,用鼠标或手写笔难以操作。
- 在空间上为用户提供一定的容错。当用户松开鼠标键时允许一定的鼠标移动(例如,三个像素)。用户在松开鼠标键时有时会轻微移动鼠标,因此刚刚松开鼠标键之前的鼠标位置比之后能够更好地反映用户的意图。
- 在时间上为用户提供一定的容错。使用系统双击速度来区分单击和双击。
- 单击在鼠标键抬起时生效。用户在松开鼠标键之前从有效目标上移开的话,可以放弃单击操作。对于大多数鼠标操作,按下鼠标键仅仅选中目标,松开鼠标键才会激活操作。自动重复功能(比如按住滚动箭头以持续滚动)是一个例外。
- 在选择、移动、调整大小、分割和拖放时捕获鼠标(英文)。
- 让用户能够用 Esc 键来放弃复合鼠标操作,如移动、调整大小、分割和拖放。
- 如果某个对象不支持双击而用户却可能以为它支持的话,应将“双击”操作视为一次单击。假设用户想进行的是一次单击,而非两次。
- 错误:
-
- 因为用户可能会认为任务栏按钮支持双击,所以“双击”应当被当成一次单击来处理。Windows Vista® 在窗口最小化时的行为是正确的。
- 当你的程序处于非活动状态时,忽略多余的鼠标点击。例如,当程序处于非活动状态时,如果用户单击了一个按钮 10 次,将其视为一次单击。
- 不要使用双击拖放或者和弦。双击拖放是以双击开始的拖放操作,而和弦是指同时按下多个鼠标键。这些操作不标准,而且难以发现和操作,往往只能偶然做到。
- 不要将 Alt 键用于鼠标操作的修饰键。Alt 键被留作工具栏访问和访问键。
- 不要使用 Shift+Ctrl 作为鼠标操作的修饰键。这么做会使使用非常困难。
鼠标滚轮
- 鼠标滚轮应当仅影响鼠标指针当前所指的控件、面板或窗口。这样能够避免非预期的结果。
- 鼠标滚轮应当无须单击或输入焦点即可生效。悬停已经足够。
- 鼠标滚轮应当影响的是范围最具体的对象。例如,如果鼠标指针在一个可滚动窗口中的可滚动面板中的可滚动列表框控件上方,则鼠标滚轮影响的应当是列表框控件。
- 当使用鼠标滚轮时,不要改变输入焦点。
- 鼠标滚轮应当具有下列效果:
- 对于可滚动的窗口、面板和控件:
- 滚动鼠标滚轮将垂直滚动对象,向上滚动滚轮时,对象向上滚动。由于滚轮的自然映射,滚动鼠标滚轮不应产生水平滚动,因为这样会产生方向不一致且出乎意料。
- 如果 Ctrl 键被按下,滚动鼠标滚轮则用于缩放对象,向上滚动滚轮用于放大,向下滚动则缩小。
- 倾斜鼠标滚轮可水平滚动对象。
- 对于可缩放窗口和面板(不带滚动条):
- 滚动鼠标滚轮可缩放对象,其中向上滚动用于放大,向下滚动则缩小。
- 倾斜鼠标滚轮无任何效果。
- 对于选项卡:
- 滚动鼠标滚轮能够更改当前选项卡,无论选项卡的方向如何。
- 倾斜鼠标滚轮无任何效果。
- 如果 Shift 和 Alt 键同时按下,鼠标滚轮则无任何效果。
- 对于可滚动的窗口、面板和控件:
- 为垂直滚动尺寸(用于滚动)和水平滚动尺寸(用于倾斜)使用 Windows 系统设置。这些设置可以通过鼠标控制面板项来配置。
- 当鼠标滚轮滚动速度越快时,屏幕滚动也越快。这可以使用户更加有效地滚动大文档。
- 对于可滚动窗口,考虑允许单击鼠标滚轮来将窗口置于“阅读模式”。阅读模式具有特殊的滚动原点图标,且窗口的滚动方向和速度则与滚动原点相关。
-
- 在这个示例中,Windows Internet Explorer® 支持阅读模式。
隐藏鼠标指针
- 不要隐藏鼠标指针。例外:
- 演示应用程序在全屏模式下运行时可以隐藏鼠标指针。但是,当用户移动鼠标时,鼠标指针应当被立即恢复,且在两秒钟内没有活动后重新隐藏。
- 没有鼠标的环境下(比如展台程序)可以完全隐藏鼠标指针。
- 默认情况下,Windows 会在用户在文本框中输入时隐藏鼠标指针。该 Windows 系统设计可以通过鼠标控制面板项来配置。
活动指针
Windows 中的活动指针包括忙碌指针(
)和后台操作指针(
)。
- 当用户需要花一秒以上的时间来等待某操作完成的话,则应显示忙碌指针。注意忙碌指针没有热区,因此用户在显示此指针的过程中无法进行任何点击操作。
- 当用户需要花一秒以上的时间来等待某操作完成,但程序仍然有响应,且没有其他视觉反馈表示操作并没有完成时,应当显示后台操作指针。
- 不要同时使用活动指针和进度条或进度动画。
插入符
- 在没有输入焦点的情况下,不要在文本输入窗口和控件中显示插入符。插入符向用户暗示了输入焦点,但窗口和控件能够在没有输入焦点的情况下显示插入符。当然,不要强行获取输入焦点,脱离上下文的对话框可以显示插入符。
- 错误:
-
- Windows Credential Manager 脱离上下文显示,带有插入符,但不具有输入焦点。因此,用户不会在出乎意料的位置输入密码。
- 将插入符放在用户最有可能先进行输入的位置。通常是用户上次输入的位置或者文本末尾。
无障碍访问
- 对于完全无法使用鼠标的用户来说,鼠标能完成的操作应当也可以通过键盘进行。
- 用户应当能够通过键盘做一切用鼠标可以做的事情,除了某些必须具备良好运动技能的操作,如绘图及游戏操作。
- 用户应当能够通过鼠标做一切用键盘可以做的事情,除了高效的文本输入。
- 对于在使用鼠标上存在能力限制的用户来说:
- 不要让某个操作只能通过双击或拖放来完成。
更多信息和设计规范,参见无障碍访问(辅助特性)。
文档编写
当指及鼠标时:
- 避免使用复数的“mice”。如果你需要指多个鼠标,应使用“mouse devices”。
- 使用“mouse button(鼠标键)”来表示鼠标左键。不要使用“primary mouse button(主要鼠标键)”。类似地,应使用“right mouse button(鼠标右键)”而非“secondary mouse button(辅助鼠标键)”。尽管不够确切,但用户能够理解这些术语,而且调换了按钮的用户在心中已经进行了转换。
- 使用“wheel(滚轮)”表示鼠标滚轮的旋转部分,“wheel button(滚轮按钮)”用于表示其可以单击的部分。
- 使用类似“click(单击)”、“point(指向)”和“drag(拖动)”来表示鼠标动作。用户在垂直方向上“rotate(滚动)”滚轮,水平方向上“tilt(倾斜)”滚轮,以及“click(单击)”滚轮按钮。(当 click 强调的不是动作本身,而是功能或次数时,click 译为“点击”,比如 clickable(可点击)。——译者注)
- 对于移动文档或文件夹操作来说,应使用“drag(拖动)”,而非“drag and drop(拖放)”。当“drag-and-drop(拖放)”作为形容词使用时可以接受,比如“moving the folder is a drag-and-drop operation.(移动该文件夹是一个拖放操作。)”
- 始终按动词方式连写“double-click(双击)”和“right-click(右击)”。
- 使用“click(单击)”,而非“click on”。(也不要将单击操作本身称为“点击”——译者注)“click in”(比如“click in the window”)则可以接受。
当提及鼠标指针时:
- 将鼠标指针称为“the pointer(鼠标指针)”。仅在技术文档中将其称为“cursor(光标)”。
- 对于活动指示鼠标指针,用“busy pointer(忙碌指针)”表示只包含活动指示的鼠标指针,用“working in background pointer(后台操作指针)”表示指针与活动指示的组合。
- 对于其他类型的鼠标指针,不要使用描述性的标签来称呼。必要时,应使用图形来描述鼠标指针在屏幕上的外观。
示例:
- Point to the window border.(指向窗口边框。)
- Using the mouse, click the Minimize button.(使用鼠标单击“最小化”按钮。)
- Hold down Shift and click the right mouse button.(按住 Shift 键并单击鼠标右键。)
- When the pointer becomes a
, drag the pointer to move the split line.(当鼠标指针变为
时,拖动鼠标指针以移动分割线。)