使用 @media (hover: hover) 解决粘滞悬停状态

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费额度!

Mezo Istvan 在 Medium 上的一篇博文中很好地 介绍 了这个问题及其解决方案¹

如果您点击具有 :hover 状态的内容,但没有离开页面,那么在移动设备上,:hover 状态可能会“粘滞”。 您会在使用 跳转链接 作为选项卡或触发页面内功能的按钮等内容中看到这种情况。

button:hover {
  border: 3px solid green; /* might stick! */
}

解决方案或技巧是一个新的(或较新的)“CSS4” 媒体查询,它允许您仅在具有悬停功能的设备上应用样式。

@media (hover: hover) {
  button:hover {
    border: 3px solid green; /* solves sticky problem */
  }
}

典型的触摸屏移动设备将无法通过该媒体查询,样式不会应用,并且您将避免粘滞问题。

支持度很高,所以不用太担心。

  1. 最近我们似乎不得不为链接到 Medium 上的内容道歉。 我不知道您在那里会遇到什么体验。 您能否只阅读它? 它是否会是一个您需要登录才能阅读更多内容的预告? 它是否在付费墙后面? 我不知道。 在这种情况下,希望这篇链接文章包含足够的信息,不会阻止您学习任何内容。


直接链接 →