一位店主曾经给我看过他们网站的分析数据,指出了一个奇怪的模式:用户在同一个链接上重复悬停——有时候会悬停5到6次——然后才点击。悬停状态在技术上是存在的。但颜色变化太微妙了(从#333333到#444444,几乎无法察觉的偏移),以至于用户无法区分他们是指向一个可点击的项目,还是只是在页面上移动鼠标。
他们改变了悬停状态,加入了一条可见的下划线和品牌橙色的颜色转变。首次点击的平均时间下降了4秒。导航点击率增加了28%。相同的菜单项。相同的结构。唯一的区别是交互状态的清晰度。
导航有多个状态——默认、悬停、激活、焦点、已访问——而大多数店铺只是仔细设计了默认状态。结果是用户无法自信地判断他们指向的位置、他们点击的内容或他们当前所在位置的菜单。解决这个问题不是添加更多颜色。而是定义一个贯穿所有状态的一致系统。
- 用户需要立即识别导航元素是否可点击、正在悬停、当前激活或已访问——不一致的颜色会造成混淆
- 每个状态都需要清晰的视觉差异:默认和悬停之间至少应有3:1的对比度,并在所有状态下与背景保持7:1+的对比度
- 悬停状态应该增加强调(下划线、背景移位、加粗)而不是降低对比度或大幅改变颜色
- 焦点状态(用于键盘导航)必须明显但不刺眼——彩色轮廓是标准且易于访问的
- 激活/当前页面指示符应在整个网站中使用一致的颜色和模式,以便用户始终知道他们在哪里
为什么导航状态对可用性很重要
在桌面上,用户依靠悬停反馈来判断什么是可点击的。在移动设备上,没有悬停——所以默认状态必须清楚地表明交互性。在这两种情况下,激活状态显示用户当前所在的位置,焦点状态(用于键盘导航)提供可访问性和精确度。
当这些状态有不一致的颜色时,用户会经历微观困惑:”我的悬停是否被注册了?这是可点击的吗?我是在这个页面还是另一个页面上?”每个疑惑时刻都会增加认知负荷并减慢导航速度。在一个会话中,这会累积成挫折和放弃。
尼尔森诺曼集团发现,用户依靠一致的交互反馈来建立对网站工作方式的心理模型。如果你的悬停状态在主页上是下划线,但在类别页面上是背景颜色移位,用户必须在每个页面上重新学习你的导航。这是浪费的精神努力,本应用于评估产品。
你需要设计的五个导航状态
大多数导航至少有五个不同的状态。每一个都需要自己清晰的颜色处理。
1. 默认(静止状态)
这是导航项目在任何交互之前的显示方式。它应该具有高对比度(与背景7:1+)并与不可点击的文本明显区分。
颜色策略:使用你的主要导航文本颜色——通常是黑色、非常深的灰色或高对比度的品牌颜色。
常见错误:使用中等灰色,在Figma中看起来很现代,但不符合对比度要求并融入页面。
2. 悬停(鼠标悬停)
当用户指向导航项目时,悬停状态确认它是可交互的。这个变化需要立即被注意到——不能太微妙。
颜色策略:三种可靠的方法:
- 转换为强调色:默认为黑色,悬停转换为品牌橙色(带下划线或背景)
- 变暗或变亮:默认为#2a2a2a,悬停变为#000000(带下划线)
- 添加背景:默认为深色文本在浅色背景上,悬停在文本后面添加浅色背景
规则:悬停状态必须与默认状态至少有3:1的对比度(以便用户可以看出差异)并与背景保持7:1+的对比度(以便保持可读性)。
常见错误:降低对比度的悬停状态。默认为黑色(#000000),悬停变为浅灰色(#cccccc)——用户根本看不清他们指向的内容。
3. 激活(正在被点击)
激活状态提供点击已被注册的瞬间反馈。它是按钮按下的视觉等价物。大多数用户不会自觉注意到它,但它的缺失会产生一种微妙的感觉,即界面没有响应。
颜色策略:简短的视觉强调——比悬停稍暗,或快速背景闪烁。这个状态只持续几毫秒,所以不需要看起来很漂亮——只需要被注意到。
常见错误:根本没有激活状态,或与悬停相同的状态(所以用户没有得到点击确认)。
4. 焦点(键盘导航)
当用户使用键盘(Tab键)导航时,焦点状态显示哪个元素当前具有键盘焦点。这在法律上是可访问性所必需的(WCAG 2.1),对于高级用户来说至关重要。
颜色策略:你的品牌强调色中的彩色轮廓(通常为2-3px实线)。轮廓应该在导航背景和链接文本上都清晰可见。
规则:焦点轮廓必须与背景有3:1的对比度。不要在CSS中设置outline: none,除非你用同样可见的自定义焦点指示符替换它。
常见错误:完全删除焦点轮廓,因为它”看起来不好”。这会破坏可访问性用户和喜欢键盘快捷方式的高级用户的键盘导航。
5. 当前(激活页面指示符)
当前状态显示用户所在的页面。查看”产品”页面的用户应该看到”产品”导航项在视觉上与其他项目不同——通常通过颜色、粗体权重或下划线。
颜色策略:使用你的主要强调色和/或粗体权重。这个状态应该是悬停之后视觉上最不同的,因为它提供持久的方向反馈。
常见错误:使当前状态过于微妙(略微变暗的文本),以至于用户无法判断他们在哪个部分。或使其不一致——在某些页面上加下划线,在其他页面上加粗。
建立一致的颜色状态系统
这是定义一起工作的导航状态颜色的实用框架。
第1步:从默认状态开始
你的默认导航文本应该与背景有高对比度。假设你的导航背景是白色(#ffffff),你的默认文本是非常深的灰色(#1a1a1a)——这是16.1:1的对比度,远高于7:1的目标。
第2步:定义悬停状态
你的悬停状态需要明显不同但仍然高对比度。三个选项:
选项A:颜色转换+下划线
- 默认:#1a1a1a(深灰色)
- 悬停:#ff6b35(品牌橙色)+ 2px下边框使用相同的橙色
- 与背景的对比度:4.7:1(通过WCAG AA,接近AAA)
选项B:变暗+下划线
- 默认:#1a1a1a
- 悬停:#000000(纯黑)+ 2px下边框
- 与背景的对比度:21:1(最大)
选项C:背景移位
- 默认:白色上的#1a1a1a文本
- 悬停:浅桃色背景(#fff4f0)上的#1a1a1a文本
- 对比度:文本-背景保持16.1:1;背景转换微妙但清晰
选择与你的品牌视觉风格相匹配的方法,然后在所有导航元素中一致地应用它。
第3步:定义激活状态
对于大多数网站,激活可以是悬停的稍微变暗或更饱和的版本。如果悬停是带下划线的橙色,激活是更深的橙色加相同的下划线。它只需要在瞬间内感知上有所不同。
第4步:定义焦点状态
在你的主要品牌颜色中使用2-3px的实线轮廓。针对你的导航背景和文本颜色进行测试,以确保它是可见的。大多数现代浏览器默认为蓝色轮廓,但你应该自定义它以匹配你的品牌。
示例CSS:
a:focus {
outline: 2px solid #ff6b35; /* 品牌橙色 */
outline-offset: 2px; /* 文本和轮廓之间的空间 */
}
第5步:定义当前页面指示符
当前状态应该使用你的品牌的主要强调色,并在视觉上不同但不与悬停竞争。常见模式:
- 粗体+强调色:文本是粗体并使用品牌橙色而不是默认灰色
- 下划线+强调色:文本在品牌橙色中有持久的下划线
- 背景+强调:文本后面的品牌颜色的浅色背景
选择一个模式并一致地使用它。用户应该能够扫一眼你的导航并立即发现当前页面指示符。
让用户感到困惑的常见颜色状态错误
错误1:不可见的悬停状态
问题:悬停颜色从#3a3a3a转换到#4a4a4a——1.1:1的对比度对用户来说是无法察觉的。他们悬停,似乎什么也没发生。
解决方案:目标是默认和悬停状态之间至少3:1的对比度。如果仅颜色不够,添加下划线或背景移位。
错误2:降低可读性的悬停状态
问题:默认是白色背景上的黑色文本(21:1对比)。悬停将文本改为浅灰色(#cccccc)在白色上(1.6:1对比)。用户无法读取他们悬停的链接。
解决方案:悬停应该保持或增加与背景的对比度。如果你想在悬停时使用较浅的颜色,在其后添加深色背景。
错误3:不一致的当前页面指示符
问题:在主页上,当前导航项是粗体。在类别页面上,它是下划线。在产品页面上,它是不同的颜色。用户没有一致的方式来定位自己。
解决方案:为当前状态选择一个视觉处理(粗体+强调色很常见)并应用到任何地方。一致性创造识别。
错误4:没有焦点状态(或不可见的焦点状态)
问题:CSS包含a:focus { outline: none; }来”清理”默认浏览器轮廓,但没有自定义焦点样式替换它。键盘用户无法判断哪个链接有焦点。
解决方案:永远不要在不替换轮廓的情况下删除焦点轮廓。使用清晰可见的彩色轮廓或背景移位。
错误5:不能转换到移动设备的状态
问题:在桌面上,悬停状态很完美——清晰的颜色转换,下划线出现,一切正常。在移动设备上,没有悬停。默认状态不清楚地表明什么是可点击的,用户犹豫地点击。
解决方案:移动设备上的默认状态应该比桌面上稍微更强调。考虑添加微妙的图标(箭头、雪佛龙)或使文本略微加粗,以便即使没有悬停也很明显是可交互的。
为不同的导航组件定义状态
不同的导航元素需要略微不同的状态处理。
顶级菜单项(水平导航栏)
这些是你的主要类别:”商店”、”关于”、”联系”。他们需要完整的五状态处理:默认、悬停、激活、焦点、当前。
推荐模式:默认为深灰色,悬停为品牌颜色+下划线,当前页面为粗体+品牌颜色。
下拉菜单/超大菜单项
下拉菜单中的项目是次级导航。他们应该使用与顶级项目相同的颜色系统,但可以略微少强调(更小的文本,默认状态不加粗)。
推荐模式:默认为中深灰色,悬停时仅下划线(不需要颜色转换),当前页面与顶级相同。
导航中的CTA按钮
你的导航中的”立即购买”或”注册”按钮在视觉上是不同的——它已经是一个有背景的按钮。它的状态应该与你网站上的按钮模式一致。
推荐模式:默认为品牌色背景,悬停为略微变暗的背景或轻微缩放/阴影,焦点为按钮外的轮廓。
移动汉堡菜单和标签栏项目
移动导航通常使用带标签的图标。状态系统应该适应这种视觉模式,同时保持一致性。
推荐模式:默认图标+深灰色标签,点击改变背景瞬间(激活状态),当前页面为图标和标签都使用强调颜色。
测试你的颜色状态系统
悬停测试
在桌面上打开你的导航,慢慢将鼠标移到每个项目上。你能立即判断你是否悬停了吗?你是否曾经怀疑你的悬停是否已被注册?如果有任何犹豫,你的悬停状态还不够不同。
当前页面测试
导航到你网站上的三个不同页面。在每个页面上,用一秒钟扫一眼导航。你能立即判断你在哪个页面上吗?如果你必须研究导航才能找出答案,你的当前状态还不够明显。
键盘测试
拔掉你的鼠标。仅使用Tab键和Enter键导航你的整个网站。你能始终判断哪个导航项具有焦点吗?如果你失去了你在哪里的踪迹,你的焦点状态需要改进。
移动点击测试
在移动设备上,点击一个导航项并仔细观察。你能获得立即的视觉反馈表明你的点击已被注册吗?或者有一刻你怀疑你是否需要再次点击?移动激活状态对于感知的响应性至关重要。
一致性测试
跨多个页面和网站的多个部分导航。悬停颜色的行为方式是否总是相同?当前页面指示符是否始终使用相同的视觉模式?任何不一致都会造成混淆。
快速审计在Chrome DevTools中打开你的导航,右键单击链接,并检查`:hover`、`:active`、`:focus`和`.active`的CSS(或你的主题如何标记当前页面)。所有四个状态都定义了吗?它们是否符合对比度要求?如果有任何缺失或低对比度,现在添加它们会立即改善可用性。
你需要的颜色状态文档
一旦你定义了导航颜色状态,记录它们。这可以防止未来的设计师或开发人员破坏系统。
创建一个简单的参考,如下所示:
导航颜色状态
| 状态 | 处理 | 示例 |
|---|---|---|
| 默认 | 白色上的#1a1a1a文本 | 商店 |
| 悬停 | #ff6b35文本+2px下边框#ff6b35 | 商店 |
| 激活 | #e55a25(更深的橙色)+边框 | 商店 |
| 焦点 | 2px实线#ff6b35轮廓,2px偏移 | 商店 |
| 当前 | 粗体权重+#ff6b35文本 | 商店 |
包括十六进制代码、权重、边框样式——重新创建状态一致性所需的一切。
对于使用Navi+等导航构建器的店铺,你可以将这些状态保存为预设,并将其应用于所有导航组件,而无需手动编码每个状态。这可以锁定一致性,并使更新(如改变你的品牌颜色)自动传播到所有五个状态,跨越桌面和移动。
底线
如果用户无法判断他们指向的位置、他们点击的内容或他们当前所在的位置,他们就无法自信地导航。导航颜色状态通过在每个交互点提供一致的高对比度反馈来解决这个问题。
定义所有五个状态——默认、悬停、激活、焦点、当前——使用系统方法。使悬停状态明显不同(与默认值的3:1对比)。在每个状态下与背景保持高对比度(最少7:1+)。在你的整个网站中为当前页面指示符使用相同的视觉模式。
通过实际使用你的导航来测试你的状态:悬停、键盘导航、切换页面并检查移动。如果有任何关于元素是否可交互或你在哪个页面上的疑惑时刻,你的状态需要改进。
颜色状态一致性不是装饰。这是直接影响用户导航你的商店的速度和信心的基本可用性。
本文是更大指南的一部分:导航中的色彩心理学:哪些颜色能促进行动?