【发布时间】:2021-08-29 11:50:56
【问题描述】:
看看这个(过于简化的)sn-p:
HTML
<div class="container">
<button class="no-select">Button</button>
Container Text
</div>
CSS
.no-select {
user-select: none; /* For comprehension sake, pretend this works for every browsers */
}
单击、拖动或双击桌面上的按钮时,它按预期工作:按钮内的文本未突出显示。
在移动设备上长按按钮仍然不会选择按钮内的文本,而是开始选择父级的文本。更准确地说,它可以选择下一个“可选择”的东西。在这种情况下,它将是容器文本(Container Text)。我只在iOS上测试过,其他设备可以确认一下吗?
您还可以在 Material-UI 的 buttons 上看到此行为。长按 iOS 上的其中一个按钮,您将看到该错误。
你如何防止这种行为发生?
【问题讨论】:
-
在 iOS 中可以通过向相关元素添加一个“touchstart”监听器然后在事件上调用 .preventDefault() 来避免这种情况......但这可能会让你失去触摸的能力 -如果在该元素上开始触摸(????),则滚动,因此不完全是“答案”。
标签: html css ios reactjs mobile