更优质的下拉式菜单体验:给鼠标箭头多一点空间

我已经有一段时间没有听到像标题这样的内容了,这是一个相当陈旧的UX概念。但是这仍然和多级下拉菜单有很紧密的关系。像鼠标剪头这样具有细颗粒度的指针(fine-grained pointer),有时候不得不穿过十分狭窄的路线才能准确的找到下拉菜单中的选项。这非常容易找错目标,也许我们可以让这件事情更容易。


你可以找你需要的按钮,不过这里的路线十分狭窄
如果你不小心偏离路线 那么你想要寻找的区域就会消失


一个基础CSS解决方法

下拉式菜单是一个十分典型的设计,子菜单的显示方式,通过对父元素设置:hover实现,或者在Javascript中设置mouseenter/mouseover的状态来实现。所以更优质的下拉菜单技巧就是预防事件发生的太容易或者扩宽路线的范围。

通过思考我得到的结果是:因为在CodePen的下拉菜单的实际路线十分窄,为了拓宽路线并阻挡鼠标触发上下的子菜单项,我在子菜单上增加了两个看不见的元素,如果鼠标移到这两个看不见的元素处,什么事情都不会触发,这就更加符合真实的鼠标使用体验。

(这段真是好狗血,我没有直译,修改了一些内容。【重要内容】我认为作者是CodePen的开发,如今他已经为CodePen添加了两个看不见的元素,所以如今CodePen的下拉列表已经表现十分良好)

红色的部分就是两个看不见的元素的位置 鼠标移上去不会改变任何菜单状态


【译者截图】更加直观的展示一下 鼠标hover在New Post的位置

这真的是十分轻量级的CSS技术,我很喜欢。但有一点危险的是你会遮住一部分临近的菜单项,这可能意味着一个用户把鼠标放在正确的菜单上却无法点击它。我猜测有很多情况下有人只移动鼠标一点点就能正常工作,但是这显然要有一个平衡点,在很小和很大的移动之间。

回到2005年的历史洪流中,这有一个经典的【定位就是一切】(Position is Everything)的演示:

里面详细的展示了所述功能


用CSS扩宽边界

John Gardner创造了一个方法,让所有的菜单都有一个额外的空间包围它们,使鼠标Hover-off的范围增大。

鼠标在红色和蓝色的线框内菜单都不会消失

【这里还有一个动态的代码展示,需要到原文中体验】


(Un)Hover意图

你听说过hover意图么(hover intent)。它的概念是区分你是否有想触发Hover的意图。(【译者】说白了就是鼠标要放在菜单上一会儿才会执行事件)这有点像故意延迟。当UI发生暴走的情况时你就可以用它。

相反的我们就有了unhover意图。当我们能立即得到hover事件的效果时,我们却希望unhover不要立即发生。在CSS中,你可以做下面的事情:

记住我们要使用visibility属性,因为它可以使用transition属性,而不是display。

【这里还有一个动态的代码展示,需要到原文中体验】

Javascript也可以完成。和处理防抖动一样,你应该避免鼠标在不小心离开时,菜单消失的功能被立刻触发。你可以通过setTimeout来实现更好的效果,这是十分简单的,但是:

【这里还有一个动态的代码展示,需要到原文中体验】

不过,这些unhover的演示都没有从源头解决路线狭窄的问题,他们通过降低反应速度来处理鼠标问题。


避开狭窄的路线

没有任何规定说明子菜单一定要从旁边出现,如果它们从菜单的下面出现,那么路线就会保持宽阔。这里有一个Timothy M.LeBlanc:的演示

【这里还有一个动态的代码展示,需要到原文中体验】


一个华丽丽的JsvaScript工具

在几年前Ben Kames在这个课题上发布了一个非常棒的文章。它发现亚马逊网站的下拉菜单用起来十分爽快,相比那些使用延迟方法的人,亚马逊则发挥了数学的魅力。如果鼠标处在:所触发子菜单位置和子菜单之间的三角区域内,鼠标就不会触发任何其他的菜单按钮。快看:

哇哦

Ben把这个东西放进了一个jQuery插件中,并且还制作了一个Demo

他也十分同意下面的话:

我十分确定这个问题已经解决了很多年。但是这个议题却经常被世人遗忘、重新发现、重新解决、又被遗忘、被发现、解决...

在我们的行业中,这真是一个悲伤的事实啊。

【Jon Neal 改进了这个插件并增强了数学逻辑,但译者我觉得不好用,不贴这块内容了】


瞎扯

我想到有一个智者说过:

有时候用户登陆你的网站会拿着一个鼠标,但他们有时候却什么都不拿!

所以,衷心的祝福你的下拉式菜单在触摸屏上也能正常工作,你当然要让他们能工作,你也可以打电话给我如果你希望一起提高代码的效率,或者你想得到一些有趣的发现并为了使用不同的文件需求。

键盘对于控制下拉菜单是另一个经典的问题,我不会吝啬我的任何好主意去帮助你去提高UX。让我们共同提高吧。


翻译自:Dropdown Menus with More Forgiving Mouse Movement Paths

【断断续续翻译了两周,这哥们的书面英语实在是太口语化了,我这个英语渣被虐翻了啊。所以翻译之处很多都是按照意译或者理解之后翻译的,尽可能的在关键部分保持正确性,在非关键部分保持灵活性,谢谢】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容