CSS:在iOS Safari和Chrome上:hover无法工作

14

我有一个圆角div,其中包含一个圆角图片和一个带有 opacity: 0.5; 的底部标题。在悬停时,透明度应变为1。它在所有桌面浏览器和Firefox for iOS上都可以正常工作,但在Safari和Chrome for iOS上不起作用。

Fiddle: 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}
4个回答

30
我找到了一个解决方法:如果您在div上添加onclick="",那么悬停效果将会生效。
您的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>

1
当您轻触并长按时,它与悬停相同,并且在Firefox for iOS中有效。 - M1X
1
你说得对。我在Chrome和Safari中尝试悬停时遇到的问题是,当我点击并长按div时会选择文本。我认为Safari会先执行“选择文本”而不是“应用悬停”。 - Wouter van Dijke
我找到了一个解决方法:如果你在div中添加onclick = "",那么悬停效果就会起作用。请查看更新后的答案。 - Wouter van Dijke
1
我有一个风险,但是我不明白为什么我有两个不同的<div class=""> 上有两个:hover,第一个div.class1:hover在Chrome和Safari Mobile上都可以正常运行。但是最后一个div.class2:hover在Safari Mobile上不能工作,只能在Chrome Mobile上工作。 - kollein
7
如果你在CSS中加入 "cursor: pointer",它具有相同的效果。 - Gavin
显示剩余2条评论


0

解决方案:

如果您想使用:hover:focus,请使用tabindex="0"


解释:

问题在于,<div> 在其自然状态下不是一个可聚焦元素。

许多在 HTML 表单中常见的元素,如 <input><button>可聚焦的,但其他在表单之外常见的元素,如 <div><li> 则不是。

如果您想使一个通常不能被聚焦的元素成为可聚焦元素,则有多种方法可以实现此目的。

正如本页面上的一个答案所述,onclick="" 将使该元素成为可聚焦元素。

但是,使一个元素成为可聚焦元素的标准方法是使用 tabindex="0"


更多阅读:


0

我有同样的包:当悬停在父元素上时,子按钮应该将其样式从透明度:0更改为透明度:1 - 这仅在Safari中不起作用。onclick=""和tabindex="0"对我来说都不起作用。 奇怪的解决方案但有效!:将position: relative;添加到父元素中


1
根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接