CSS :hover 在 iOS Safari 和 Chrome 上不起作用
CSS :hover not working on iOS Safari and Chrome
我有一个圆形的 div,它有一个圆形的图像和底部的标题 opacity: 0.5;
悬停时不透明度应该变为 1。它在所有桌面浏览器和 Firefox 上工作正常 iOS 但它不适用于 Safari,也不适用于 iOS。
Chrome
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}
我找到了一个解决方法:如果您将 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 浏览器需要一个默认可点击的元素。如果您使用 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">
,这样代码才有效。
解决方案:
如果您希望 :hover
和 :focus
起作用,请使用 tabindex="0"
解释:
问题是 <div>
在自然状态下不是 可聚焦的 元素。
许多元素常见于 HTML 形式,如 <input>
和 <button>
focusable ,但其他常见于外部形式的元素如 <div>
和 <li>
则不是。
如果你想让一个元素可聚焦,而通常情况下,它是不能被聚焦的,有很多方法可以实现这个结果。
正如本页的一个回答所述,onclick=""
将使元素 可聚焦。
但是标准使元素可聚焦的方法是使用tabindex="0"
进一步阅读:
我有一个圆形的 div,它有一个圆形的图像和底部的标题 opacity: 0.5;
悬停时不透明度应该变为 1。它在所有桌面浏览器和 Firefox 上工作正常 iOS 但它不适用于 Safari,也不适用于 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}
我找到了一个解决方法:如果您将 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 浏览器需要一个默认可点击的元素。如果您使用 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">
,这样代码才有效。
解决方案:
如果您希望 :hover
和 :focus
起作用,请使用 tabindex="0"
解释:
问题是 <div>
在自然状态下不是 可聚焦的 元素。
许多元素常见于 HTML 形式,如 <input>
和 <button>
focusable ,但其他常见于外部形式的元素如 <div>
和 <li>
则不是。
如果你想让一个元素可聚焦,而通常情况下,它是不能被聚焦的,有很多方法可以实现这个结果。
正如本页的一个回答所述,onclick=""
将使元素 可聚焦。
但是标准使元素可聚焦的方法是使用tabindex="0"
进一步阅读: