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
:
<a href="javascript:void(0);" class="title_wrap"><div class="title">bang bang</div></a>
并将其设置为块元素:
.title_wrap
...
display:block;
如果您不使用 HTML5,则必须将 <div class="title">
更改为像 <span class="title">
这样的内联元素,这样代码才有效。
【讨论】:
以上是关于CSS :hover 在 iOS Safari 和 Chrome 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
CSS 'transform: scale()' 属性在 iOS Safari 和 iOS Chrome 上也不起作用