问题:
当触摸设备访问网站时,:悬停 CSS 样式在点击或点击时触发。这可能会分散注意力,甚至导致交互元素无法访问。
目标:
在不知道每个声明选择器的情况下删除或忽略触摸设备的所有 :hover CSS 声明。
解决方案:
使用 JavaScript 删除所有包含 :hover 的 CSS 规则。
<code class="javascript">if (hasTouch()) { for (var si in document.styleSheets) { for (var ri = styleSheet.rules.length - 1; ri >= 0; ri--) { if (styleSheet.rules[ri].selectorText.match(':hover')) { styleSheet.deleteRule(ri); } } } }</code>
优点:
使用 @media 块包含 :hover 规则。
<code class="css">@media (hover: hover) { a:hover { color: blue; } }</code>
优点:
检测触摸事件使用 JavaScript 并有条件地添加 CSS 类。
<code class="js">if (!hasTouch()) document.body.className += ' hasHover'</code>
<code class="css">body.hasHover a:hover { color: blue; }</code>
优点:
基于鼠标光标和触摸事件启用或禁用悬停样式。
<code class="js">function watchForHover() { document.addEventListener('touchstart', updateLastTouchTime, true) document.addEventListener('touchstart', disableHover, true) document.addEventListener('mousemove', enableHover, true) }</code>
优点:
以上是如何有效禁用触摸设备上的 :hover 样式:综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!