当前位置: 首页 > 面试题库 >

如何防止触摸设备上按钮的粘滞悬停效果

潘皓
2023-03-14
问题内容

我创建了一个带有始终可见的上一个和下一个按钮的轮播。这些按钮处于悬停状态,它们变为蓝色。在诸如iPad的触摸设备上,悬停状态为粘滞状态,因此在点击它后按钮保持蓝色。我不要

  • 我可以为每个按钮添加一个no-hoverontouchend,并使我的CSS像这样:button:not(.no-hover):hover { background-color: blue; }但这可能会降低性能,并且不能正确处理Chromebook Pixel(具有触摸屏和鼠标)之类的设备。

  • 我可以向中添加一个touchdocumentElement,并使CSS像这样:html:not(.touch) button:hover { background-color: blue; }但是,这在同时带有触摸和鼠标的设备上也无法正常工作。

我更希望删除悬停状态ontouchend。但这似乎是不可能的。聚焦另一个元素不会删除悬停状态。手动点击另一个元素可以,但是我似乎无法在JavaScript中触发它。

我发现的所有解决方案似乎都不完美。有没有完美的解决方案?


问题答案:

您可以通过从DOM临时删除链接来删除悬停状态。

在CSS中,您可以:

:hover {background:red;}

在JS中,您可以:

function fix()
{
    var el = this;
    var par = el.parentNode;
    var next = el.nextSibling;
    par.removeChild(el);
    setTimeout(function() {par.insertBefore(el, next);}, 0)
}

然后在您的HTML中:

<a href="#" ontouchend="this.onclick=fix">test</a>


 类似资料:
  • 问题内容: 如果用户通过触摸设备访问我们的网站,我想忽略所有CSS声明。因为CSS没有意义,而且如果平板电脑在单击/点击时触发CSS,则CSS甚至可能会受到干扰,因为它可能会一直停留直到元素失去焦点。老实说,我不知道为什么触摸设备首先感觉到需要触发-但这是现实,所以这个问题也是现实。 因此,在声明触摸设备后,如何(如何)可以立即删除/忽略所有CSS 声明(而不必知道每个CSS )? 问题答案: 如

  • 问题内容: 如果我有标记: .a类具有与之关联的悬停类 .b类具有与之关联的伪元素…像这样: CSS是否有可能防止伪元素触发.a类悬停? 小提琴 问题答案: 以下CSS为现代浏览器(而非IE10-)提供了诀窍: 允许元素不接收悬停/点击事件。 警告 对非SVG元素的支持处于相对早期的状态。developer.mozilla.org给您以下警告: 在CSS中将指针事件用于非SVG元素是实验性的。 该

  • 在Android手机上,我可以通过用户在其手机屏幕或设备上触摸获得坐标信息。那么,如何使用/传递这些X-Y坐标来运行我的特定函数,并在代码中使用它呢

  • 问题内容: 当我将鼠标悬停在DIV上时,它将触发将鼠标悬停在父DIV上,这对我来说似乎是错误的。我只希望“突出显示”效果在子DIV 上起作用。 问题答案: 根据定义,将鼠标悬停在孩子上,也将鼠标悬停在父母上。html事件中没有“阻止”。 有两个方法链,气泡和捕获。 W3C事件模型中发生的任何事件都首先被捕获,直到到达目标元素,然后再次冒泡。 http://www.quirksmode.org/js

  • 我目前正在研究这个导航菜单的样式 它在浏览器上运行良好。至于手机,有一种奇怪的蓝色onclick效应。我怎样才能删除它 屏幕截图: 单击前https://imgur.com/Ovu5v7P 点击https://imgur.com/lOwpicT 这是我的密码:

  • 在本地MacOS应用程序的触摸栏中创建一个按钮 进程: 主进程​ new TouchBarButton(options) 实验功能 用途:创建新按钮 options Object label String (可选) - 按钮文本 backgroundColor String (可选) - 十六进制的按钮背景颜色如 #ABCDEF icon NativeImage (可选) - 按钮图标 iconP