iOS Safari 中的点击会触发点击位置下方元素的“悬停状态”

2024-02-08

在 iOS Safari 11 上,如果我有<div>定位在具有:hover效果,以及<div>有一个事件使其在单击时消失,然后我的链接“下方”在元素从 DOM 中删除后应用悬停效果。

请参阅下面的动画 GIF,了解我正在谈论的内容:

iOS click through

我为按钮提供了透明背景,以便您可以看到其后面的链接。当我点击链接所在位置的按钮时is not位于,链接(即Some link) 保持蓝色并且不会更改为红色的悬停状态。

然而,当我点击div在一个恰好是的地方直接在链接之后div从 DOM 中删除后,链接将应用其悬停状态。

在每个正确触发后单击链接on.click事件(警报窗口)。

I do not在 Chrome 上的 android 上查看此问题(请参阅下面的示例):

Android click through working

您还可以在下面找到我使用的示例 HTML/CSS/JS;设置非常简单。

我想让 iOS 以与 Android Chrome 相同的方式运行:即单击立即从 DOM 中删除的元素不应该触发一个:hover紧随其后的元素的状态。

var button = document.querySelector(".button");
button.addEventListener("click", function() {
  button.parentNode.removeChild(button);
});

var link = document.querySelector('a');
link.addEventListener("click", function() {
  window.alert('clicked!');
});
a:link    { color: blue }
a:visited { color: blue }
a:hover   { color: red }
a:active  { color: green }

.button {
    background: rgba(100, 0, 0, .4);
    position: absolute;
  
    top: 2px;
    left: 2px;
    z-index: 1;

    width: 100px;
    height: 100px;
    line-height: 100px;

    text-align: center;
    border-radius: 5px;
}

.button:hover {
    background: rgba(0, 100, 0, .4);
    cursor: pointer;
}
<a href="#">Some link</a>
<div class="button">Click me!</div>

如果您可以选择禁用悬停,那么您可以通过一些技巧来做到这一点。

首先在“DOMContentLoaded”事件处理程序中添加这一行。

var canHover = !(matchMedia('(hover: none)').matches);
if (canHover) {
  document.body.classList.add('can-hover');
}

它将把 .can-hover 类添加到 html 文档的正文中。

然后只需编辑 a:hover 规则来匹配此规则

你的CSS规则:

a:hover {
  color: red;
}

应该:

.can-hover a:hover {
  color: red;
}

这应该可以防止带有触摸屏的设备将悬停样式应用于任何锚点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS Safari 中的点击会触发点击位置下方元素的“悬停状态” 的相关文章

  • 在 IE 中使用
    标签时,填充不起作用

    我在我的应用程序中使用 HTML5 标签 标签的填充在 chrome ff 和 safari 中工作正常 但在 IE 中不起作用 我尝试添加显示 块 与部分样式 但它没有用 有什么解决办法吗 许多旧浏览器不理解 HTML5 标签 例如sec
  • iOS设备和iPhone模拟器内存​​组织的差异

    我正在尝试使用 Xcode 4 3 3 和 iPhone 5 1 模拟器开发一个应用程序 当我在模拟器上运行这个应用程序时 我没有收到任何警告 并且它运行得很好 但是 当我尝试在 iOS 设备上执行此操作时 我收到一条警告消息 收到内存警告
  • ES6 Promises/在满足多个 Promise 后调用函数(不能使用 Promises.all)[重复]

    这个问题在这里已经有答案了 我正在编写 Javascript 它需要这些事件按以下顺序发生 同时触发多个 API 调用 所有调用完成且响应返回后 执行一行代码 听起来很简单 但棘手的部分是我不能使用 Promises all 因为我仍然希望
  • 在文档片段中查找注释或文本节点

    我必须清理 Nokogiri HTML DocumentFragment 文档 删除仅包含空格的注释节点和文本节点 这是一个例子 html p paragraph p p paragraph p p paragraph p doc Noko
  • 在javascript中通过window.location传递数据

    我试图通过 window location 传递数据 数据在 del id img album 中可用 我想通过 window location 发送多个值 window location save php type deldownload
  • 使用 ngx-translate 时更改 URL

    当有人使用 ngx translate 单击所选语言时 我尝试更改 URL 我想我应该通过订阅语言更改事件然后修改当前的 url 以反映所选的语言来做到这一点 因为我是新手 所以我不确定是否需要服务来做到这一点 或者可能是另一种解决方法 我
  • IOS 8 无声推送通知在没有 Xcode 的情况下无法工作

    我正在尝试测试静默推送通知 我注意到当我的设备连接到 Xcode 时 我的 iPhone IOS 8 只能接收静默通知 当它被拔掉时 我在大约 5 10 次尝试中只能收到一次静默推送 这种情况只发生在 IOS 8 上 因为我有另一部手机正在
  • 我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?

    在我的项目中 我将所有私有 swift 2 3 文件迁移到 swift 3 我想使用用 swift 2 3 编写的遗留框架 直到它们有 swift 3 版本 我尝试添加 使用旧版 Swift 版本 是 清除 构建我的项目 但我仍然遇到一些麻
  • 如何为整个 iOS 应用程序设置自定义字体而不指定大小

    我正在尝试在整个我的应用程序中应用自定义字体iOS app 我发现我可以使用 UILabel appearance setFont UIFont fontWithName Proxima Nova size 17 0 设置所有的默认字体和大
  • 如何在 SwiftUI 中将变量从一个视图传递到另一个视图

    我正在尝试将一个变量从一个视图传递到 SwiftUI 中的另一个视图 我有一个重置按钮 我想在另一个视图中将变量设置为零 我尝试在视图一中创建一个新结构并在视图2中访问该变量 View 1 State var count MyNumber
  • 保留以下文本的标题

    我正在使用 css 列计数功能将我的部分分成两列 在一个页面上 我在第一列的底部有一个 h3 标题 在下一列的顶部有一个 p 段落 我想保留该段落的前几句话的标题 我可以将其与整个段落一起包装在使用 inline block 样式的 div
  • javascript捕获文本区域中的粘贴事件

    我目前有一个文本区域 我需要控制已粘贴的文本 本质上 我需要能够将用户想要粘贴到文本区域中的任何内容并将其放入变量中 然后我将计算出他们粘贴文本的位置和字符串的大小 以将其从文本区域中删除 然后最后用我自己的方式处理变量中的文本 我的问题
  • 使用 Swift 在 Sprite Kit 中构建棋盘游戏? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在使用 Swift 的 Sprite Kit 中 我试图构建一个国际象棋棋盘 实际上是一个类似国际象棋的棋盘 平铺网格 那么一般来说
  • Xcode 9.2 的正确应用程序图标 (appicon) 命名约定是什么?

    我从以下网站下载了一组 23 个 iOS 应用程序图标https makeappicon com https makeappicon com具有以下文件名 email protected cdn cgi l email protection
  • 插入四个空格而不是制表符

    我试图在按下 Tab 键时插入四个空格 我正在使用以下代码 请参阅spaces t 但是当我将其切换到spaces 当我按 Tab 时只插入一个空格 我还尝试了 function textarea keydown function e va
  • 渐变方向从左到右

    我完全被这个问题难住了 它应该如此简单 以至于让我发疯 我正在使用这个苹果反射教程 苹果反射示例 http developer apple com library ios samplecode Reflection Listings MyV
  • Google Cardboard - Cardboard VR 套件有 iPhone / iOS 入门项目吗?

    我正在看Google Cardboard 套件 一种廉价的 VR 设置 https developers google com cardboard 使用 Android 设备玩 3d VR 游戏 我看到他们有一个 Android 演示项目
  • 如何找出javascript中加载了哪些javascript?

    继另一个问题的评论之后 我问自己是否有办法获取页面上加载的所有 js 代码的列表 就像 Firebug 或 chrome Inspector 所做的那样 有没有一种纯javascript的方法 一种方法是抓取脚本标签 但这样你可能会错过动态
  • 有没有办法从 Instruments (Xcode) 的命令行实例中删除授权提示?

    我目前正在通过 bash 脚本使用 Instruments 来启动命令行界面以启动自动化插件的运行 在 4 2 中 这工作得很好 但是随着升级到 Xcode 4 3 我现在被提示需要授权用户 分析其他进程 即使授予了正确的凭据 也不会真正对
  • Page_ClientValidate 正在验证多次。

    我的问题是 验证摘要消息 警报 显示两次 我无法弄清楚原因 请帮忙 这是代码 function validate javascript function if typeof Page ClientValidate function var

随机推荐

  • 检查数据框是在 Pandas 中复制还是查看

    有没有一种简单的方法来检查两个数据帧是否是不涉及操作的相同基础数据的不同副本或视图 我试图掌握每个规则的生成时间 并且考虑到规则看起来有多么特殊 我想要一种简单的测试方法 例如 我认为 id df values 在不同视图中是稳定的 但它们
  • Rails own_to 关联,作为集合的一部分时无法访问所有者的属性?

    我有一个物体 球 它属于一个女孩 它可以有很多球 大多数情况下一切正常 但如果我尝试通过以下方式打印出女孩的名字 balls each do b b girl name end 我收到以下错误 undefined method name f
  • 监听 Flutter SQFLite 数据库中的实时变化

    我创建了一个功能齐全的应用程序Flutter 它用sqflite https pub dev packages sqflite用于存储数据的插件 我想要一个数据更改监听器 当添加或更新新数据时 它将更新或刷新数据 我怎样才能做到这一点 我遇
  • 具有外部 IP 的 Google 容器引擎,无负载均衡器

    我能够连接到 Kubernetes 中 pod 中运行的应用程序 但这是使用负载均衡器网关 根据此处的文档 https cloud google com container engine docs tutorials http balanc
  • 如何在 splinter 中选择 class 、 div 、 tag ?

    我想了解 splinter 的功能 我试图在网上找到 但我找不到关于 splinter 的实用示例的良好文档 所以我在这里问了几个问题 以便它将帮助尝试学习 splinter 的初学者 首先我很困惑splinter中实际的CSS选择器是什么
  • 有没有办法从 UTF8 转换为 ISO-8859-1?

    我的软件获取的一些 UTF8 字符串需要转换为 ISO 8859 1 我知道 UTF8 域比 ISO 8859 更大 但是 UTF8 中的数据之前已从 ISO 上转换 因此我不应该错过任何内容 我想知道是否有一种简单 直接的方法可以将 UT
  • Chrome 扩展程序替换当前文本区域中的单词

    我正在尝试制作一个 chrome 扩展来替换当前输入的最后一个单词
  • express.js 在路由时不显示 console.log 消息

    注 我很新表达 var express require express var app express app get function req res res send id req params id and name req para
  • 如何将 UISlider 更改为垂直?

    我正在定制一个UISlider对于我的应用程序 我希望滑块处于垂直方向 但默认UISlider处于水平方向 我找不到如何更改UISlider的方向 如何在 XCode 中制作垂直滑块 默认情况下 UISlider 是水平的 如果您希望使其垂
  • 如何使用 Mustache.js 制作客户端 I18n

    我有一些静态 html 文件 想要通过 Mustache js 进行客户端修改来更改其中的静态文本 看来这可能是 Twitter 在 github 上的 Mustache 扩展 https github com bcherry mustac
  • 使用jquery捕获iframe内的鼠标右键单击事件

    我需要使用任何 javascript 或 jquery 代码捕获 asp net 中 iframe 内的鼠标右键单击事件 下面是我到目前为止尝试过的代码
  • 通过套接字从 PHP 向 Python 发送消息

    我正在尝试使用 PHP 向 Python 套接字发送消息并打印该消息 这是到目前为止的 PHP 代码
  • grunt 插件刷新 eclipse java 项目

    背景 我有一个使用 lesscss 的 java 项目 我在用grunt with grunt contrib watch and grunt contrib less to compile my lessfiles to css 一切都很
  • 在 Excel 折线图中隐藏数据点

    显然可以在 Excel 折线图中隐藏单个数据点 选择一个数据点 右键单击 gt 设置数据点格式 选择图案 选项卡将行设置为无 如何在 VBA 中完成同样的事情 直觉告诉我应该有一个属性点对象 http msdn microsoft com
  • 如何在行之间留出空间而不中断其边框?

    我在 html 表中有两行 如下所示 在第一条中 你可以看到我制作了边框 我不想打断它 但如第二个所示 我想在每行的按钮之间添加一些空间 而不影响边框 我可以使用什么属性来执行此操作 这是我的html table tr td width 1
  • 在h5py中,什么是类型“|O”?

    调试使用 h5py 的程序 hdf5 应该看起来像这样 test hdf5 labels lt DataSet train lt Group I do gt gt gt import h5py gt gt gt test h5py File
  • 在 docker 镜像中安装 Tensorflow 时出错

    我正在尝试在 docker 映像中为我的应用程序安装tensorflow 我用来构建图像的文件夹中有 3 个文件 Dockerfile index py and requirements txt 这些文件的内容是 Dockerfile FR
  • Python - Numpy 3D 数组 - 连接问题

    我有一个包含 46 个条目的 txt 文件 如下所示 2020 05 24T10 57 12 743606 0 0 0 0 0 0653934553265572 0 0 1 0 0 0 2020 05 24T10 57 12 806380
  • VB6 和 VB7 的 Longptr 数据类型

    我面临的问题是 我想分发我的 Excel VBA 模板之一 几乎在所有过程中 我都指定了 LONG 数据类型 但是 我发现对于VBA7或2010及更高版本 我们可以使用LongPtr数据类型进行分配 这将绕过版本控制问题 无论是 64 位还
  • iOS Safari 中的点击会触发点击位置下方元素的“悬停状态”

    在 iOS Safari 11 上 如果我有 div 定位在具有 hover效果 以及 div 有一个事件使其在单击时消失 然后我的链接 下方 在元素从 DOM 中删除后应用悬停效果 请参阅下面的动画 GIF 了解我正在谈论的内容 我为按钮