CSS :hover 在 iOS Safari 和 Chrome 上不起作用

Posted

技术标签:

【中文标题】CSS :hover 在 iOS Safari 和 Chrome 上不起作用【英文标题】:CSS :hover not working on iOS Safari and Chrome 【发布时间】:2016-05-13 07:04:15 【问题描述】:

我有一个圆形 div,它有一个圆形图像,底部有一个标题 opacity: 0.5; 在悬停时,不透明度应该变为 1。它在所有桌面浏览器和 Firefox for ios 上都可以正常工作,但在 Safari 上不起作用也不是适用于 iOS 的 Chrome。

小提琴:https://jsfiddle.net/a10rLbnL/2/

html

<div class="video_wrap update">
  <div class="content">
    <div class="img_wrap"><img src="https://i.ytimg.com/vi/0HDdjwpPM3Y/hqdefault.jpg"></div>
    <div class="title_wrap"><div class="title">bang bang</div></div>
  </div>
</div>

CSS:

.video_wrap 
    display: inline-block;
    width: 30%;
    padding-bottom: 30%;
    margin: 0 1%;
    position: relative;
    vertical-align: top;


.content 
    position: absolute;
    height: 100%;
    width: 100%;


.img_wrap 
    height: 100%;
    border-radius: 120px;
    overflow: hidden;


.title_wrap 
    line-height: 50px;
    top: -50px;
    height: 50px;
    position: relative;
    left: 0px;
    background: #fff;
    color: #f8008c;
    font-size: 12px;
    text-align: center;
    cursor: default;
    opacity: 0.5;
    transition: all .5s ease-in;
    min-height: 50px;


.img_wrap img 
    height: 100%;
    cursor: pointer;


.title_wrap:hover opacity: 1

【问题讨论】:

【参考方案1】:

我找到了一种解决方法:如果将 onclick="" 添加到 div 中,悬停将起作用。

您的 html 将是:

<link rel="stylesheet" href="hover.css" type="text/css"/>

<div class="video_wrap update">
  <div class="content">
    <div class="img_wrap"><img src="https://i.ytimg.com/vi/0HDdjwpPM3Y/hqdefault.jpg"></div>
    <div class="title_wrap" onclick=""><div class="title">bang bang</div></div>
  </div>
</div>

【讨论】:

当您点击并按住时。它与悬停相同,适用于 iOS 版 Firefox。 你是对的。尝试在 Chrome 和 Safari 中悬停时遇到的问题是,当我点击并按住 div 时,我正在选择文本。我认为 Safari 将“选择文本”放在“应用悬停”之前。 我找到了一个解决方法:如果将onclick="" 添加到 div,悬停将起作用。查看更新的答案。 我有这样的风险,但我不明白为什么我有两个:悬停在两个不同的 上,第一个 div.class1:hover -> 在 Chrome 和 Safari 上确定移动的。但是最后一个 div.class2:hover -> 不能在 Safari Mobile 上运行,它只能在 Chrome Mobile 上运行 如果你将cursor: pointer 添加到你的 CSS 中,它具有相同的效果。【参考方案2】:

iOS 浏览器需要一个默认可点击的元素。如果您使用 HTML5,您可以将包装器 div 更改为 a-tag

&lt;a href="javascript:void(0);" class="title_wrap"&gt;&lt;div class="title"&gt;bang bang&lt;/div&gt;&lt;/a&gt;

并将其设置为块元素:

.title_wrap 
  ...
  display:block;

如果您不使用 HTML5,则必须将 &lt;div class="title"&gt; 更改为像 &lt;span class="title"&gt; 这样的内联元素,这样代码才有效。

【讨论】:

以上是关于CSS :hover 在 iOS Safari 和 Chrome 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

:hover CSS 的伪类在 IE7 中不起作用

CSS iOS - 为啥 :hover 在状态中持续存在

CSS 'transform: scale()' 属性在 iOS Safari 和 iOS Chrome 上也不起作用

jQuery .hover 在 Safari 或 Chrome 中不起作用

Web页面中5种超酷的Hover效果

应用 CSS 过滤器时,内联 SVG 在 iOS 和 Safari 中消失