当用户“点击”时,在 Mobile Safari 中添加 :hover 效果

Posted

技术标签:

【中文标题】当用户“点击”时,在 Mobile Safari 中添加 :hover 效果【英文标题】:Adding a :hover effect in Mobile Safari when the user "taps" 【发布时间】:2011-10-31 11:02:47 【问题描述】:

是否可以在 Mobile Safari 用户单击 div 区域时触发:hover 事件?

它不一定是链接。实际上,它不可能是一个链接,因为用户会转到另一个网页。

我应用的悬停效果实际上是在一个 div 上:#div:hover color:#ccc; 我希望每当 iPad 或 iPhone 用户单击 div 区域时都会发生这种悬停。

我知道有一段 CSS 用于链接的背景颜色: -webkit-tap-highlight-color:rgba(200,0,0,0.4); 但这不适用于我的情况。

例如,如果这可以应用于文本的颜色,那么我可以使用它。

更新:请在下面查看我接受的答案

【问题讨论】:

这似乎是一个答案:***.com/questions/2851663/… 【参考方案1】:

你是在UIWebview 的上下文中谈论这个吗?您可以注入 CSS 或 javascript 并将其视为任何其他浏览器。如果你这样做,我建议jQuery

如果您没有使用UIWebView,那么我们需要在UIView 上定义手势识别器并处理这些手势。即在手势处理程序中进行悬停 uiview 并在用户点击消失时将其删除...

【讨论】:

我认为他在谈论移动 safari 哦,是的,抱歉,我只是在谈论在移动 safari 中使用 CSS。我意识到这不清楚。 是的,我想知道这是否只能使用 javascript。不幸的是,我对 javascript 的了解还不够,无法做这种事情。 (尤其是在 ios 设备上使用 JavaScript)【参考方案2】:

我已经弄清楚如何在用户点击 div 区域而不使用 javascript 时触发 :hover。这是使用display:none;display:block; 完成的。

例如:

<div class="block">
    <p>This content is shown *before* the user hovers over .block or taps .block on an iOS device.</p>
    <div class="mask">
        <p>This content is shown *after* the user hovers over .block or taps .block on an iOS device.</p>
    </div>
</div>

CSS:

.block 
    width:300px;
    height:300px;
    background:black;


.mask 
    width:300px;
    height:300px;
    background-color:gray;
    display:none;


.block:hover .mask 
    display:block;

我发现 :hover 仅在使用 display(而不是 opacity)时在 iOS 上触发。此外,CSS 过渡会忽略 display,因此无法使用 CSS 进行过渡。如果您希望桌面用户过渡,可以添加opacity:0;opacity:1;

编辑:CSS visibility 似乎也可以工作。

感谢您的时间。

【讨论】:

以上是关于当用户“点击”时,在 Mobile Safari 中添加 :hover 效果的主要内容,如果未能解决你的问题,请参考以下文章

当 iPad 处于纵向时,缩小 Mobile Safari 视口宽度?-

触摸事件仅在iPad iOS 11.4上的Mobile Safari中滚动时触发“一次”

当用户在弹出窗口之外点击时,防止 JQuery Mobile 关闭弹出窗口

使用 Mobile Safari“表单助手”在选择元素上未触发更改事件

在 Mobile Safari 中通过 JavaScript 检测关闭浏览器选项卡?

在 jQuery Mobile / Mobile Safari 中按下提交后不要隐藏键盘