当我在触摸设备上操作时,我不想要悬停行为。是否有可能一次性禁用整个网站的所有悬停效果?
假设您使用Modernizr来检测触摸并设置类。
这是我想到的解决方法,但它会导致很多不一致性:
html.touch *:hover {
color: inherit !important;
background: inherit !important;
}
有没有纯CSS的方法可以做到这一点?如果没有,那么如何使用JavaScript实现?
当我在触摸设备上操作时,我不想要悬停行为。是否有可能一次性禁用整个网站的所有悬停效果?
假设您使用Modernizr来检测触摸并设置类。
这是我想到的解决方法,但它会导致很多不一致性:
html.touch *:hover {
color: inherit !important;
background: inherit !important;
}
有没有纯CSS的方法可以做到这一点?如果没有,那么如何使用JavaScript实现?
现在所有移动浏览器都很好地支持此功能,这是 Can I use链接:
html.touch *:hover {
all:unset!important;
}
这个方法不错,但是在浏览器中支持程度有限:
html.touch *:hover {
all:unset!important;
}
但这个有非常好的 支持:
html.touch *:hover {
pointer-events: none !important;
}
对我来说完美无缺,它使所有的悬停效果都像当你触摸按钮时会点亮,但不会像鼠标事件的初始悬停效果一样出现错误。
pointer-events: none
不应该应用在 :hover
事件选择器上,而应该应用在元素选择器本身上,因为它会通过禁用悬停事件来生效。 - Remi Dall:unset
或all:initial
。html.touch *:hover {
all:unset!important;
}
.thing:hover {}
包含 Modernizr 类:
html.no-touch .thing:hover {}
虽然您应该知道,任何使用Modernizr的解决方案都不是“纯CSS解决方案”,因为Modernizr是JavaScript。