【问题标题】:When you touch an HTML element in Safari on the iPad, it turns gray. What is the logic to decide which element among nested elements is shown in gray?当您在 iPad 上的 Safari 中触摸 HTML 元素时,它会变为灰色。决定嵌套元素中哪个元素显示为灰色的逻辑是什么?
【发布时间】:2013-05-13 21:07:15
【问题描述】:

当您在 iPad 上触摸网页中的某个元素(例如编辑框)时,它会在您触摸时变为灰色。

我有一张由浮动 div 包裹的表格。当触摸数据元素时,整个表格(或其包装 div)不会变为灰色,而不是单个数据元素或行变灰。 (这个表格的功能是自动完成弹窗)

在站点的其他地方,我有一个表格,其中只有被触摸的数据元素变为灰色。

我想知道是否有人可以指导我解释这种触摸变灰背后的逻辑,以便我们可以对表格进行编码以提供所需的行为。理想情况下,我们希望行在被触摸时突出显示。

另外,如果我们可以关闭这种变灰行为,那将是另一种选择。然后我们可以自己编写高亮代码。有没有办法关闭特定 html 元素的这种行为?

谢谢。

【问题讨论】:

    标签: html ipad safari


    【解决方案1】:

    This author 提出了去除突出显示的解决方案:

    如果出于某种原因您不想突出显示您的网站或应用程序的某些元素,只需将以下 CSS 规则添加到相应的元素。

    -webkit-tap-highlight-color: rgba(0,0,0,0); 
    

    它不会禁用突出显示,但会使其不可见(opacity 为零)。

    不过,我还没有测试过。

    【讨论】:

    • 这确实使突出显示不可见。谢谢你的领导。文章还重申,正是元素的事件处理程序的存在才激活了这种行为。
    【解决方案2】:

    我发现了一些关于变灰行为背后的“逻辑”。似乎具有处理程序(如 onclick、onmousedown 等)的元素会表现出这种行为,而没有此类处理程序的元素则不会。对我们来说(有点乏味)的解决方法是更改​​自动完成的代码,以便每一行都有自己的 onmousedown 等处理程序,而不是包装 div 来处理这个问题。

    【讨论】:

      【解决方案3】:

      尝试使用 select:none; 设置包装 div 的样式

      这应该将其关闭,然后您可以自己编写高亮 onfocus 代码。

      大多数浏览器实际上都是这样做的,但在 iPad 和其他 Apple 触控产品上更为明显。它确实是出于可用性目的,所以我只建议在它导致您提到的问题时禁用它。它可以帮助用户了解他们正在点击什么,并让他们有机会在他们点击错误的东西时将手指移开。

      【讨论】:

      • 感谢您的回答。不幸的是,添加这种样式(以及用户选择等变体)似乎对我们不起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多