html - 为什么悬停状态不适用于 Safari?
问题描述
在下面的代码段中,当我将鼠标悬停在 Safari 中定义的区域上时,我没有获得悬停状态。如果您在 Chrome 中查看此代码,则悬停状态可以正常工作(悬停时,播放按钮变为蓝色)。
为什么悬停状态在 Safari 中没有按预期工作?
try {
document.body.querySelector(":focus-visible");
} catch (error) {
var script = document.createElement("script");
script.src =
"https://cdn.jsdelivr.net/npm/focus-visible@5.2.0/dist/focus-visible.min.js";
document.body.appendChild(script);
}
document.querySelector("button").addEventListener("click", function () {
alert("Button was clicked.");
});
.wistia {
position: relative;
display: block;
padding: 0;
overflow: hidden;
cursor: pointer;
width: 800px;
height: 600px;
margin-top: 50px;
border: 1px solid red;
}
.wistia__overlay {
width: 100%;
height: auto;
}
.wistia::before {
display: block;
content: "";
}
.wistia button.embed-youtube__play {
background: url("https://nextiva.com/assets/svg/play-button.svg") no-repeat center center, rgba(33, 33, 33, 0.8);
background-size: 40%;
background-position: 55%;
border: 0;
border-radius: 50%;
position: absolute;
transition: all 0.2s ease;
-webkit-transition: background 0.2s;
width: 10%;
height: 13%;
cursor: pointer;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
}
.wistia:hover button.embed-youtube__play,
.wistia button.embed-youtube__play:focus-visible {
background: url("https://nextiva.com/assets/svg/play-button.svg") no-repeat center center, #005fec;
background-size: 40%;
background-position: 55%;
}
.wistia_embed,
.wistia embed,
.wistia iframe {
width: 100%;
max-height: 100%;
}
button:focus-visible,
a:focus-visible,
a:focus-visible::after,
input[type=checkbox]:focus-visible,
input[type=radio]:focus-visible,
input[type=submit]:focus-visible {
outline: 2px solid #005FEC;
outline-offset: 4px;
z-index: 10;
}
<div class="wistia">
<button class="embed-youtube__play"></button>
</div>
解决方案
也许是因为它看起来仍然不受支持:https ://caniuse.com/css-focus-visible 。
为什么你需要并且想要使用伪类focus-visible
而不是focus
?对您或用户(这里)有什么好处?
用焦点替换焦点可见并(如果它看起来适合您)删除播放按钮的这两个属性。
outline: 2px solid #005FEC;
outline-offset: 4px;
它工作正常。
推荐阅读
- odoo - 在首页odoo中显示一个字段
- python - While A & B 和 While A if B 的区别
- c - 如何在 C 中调用函数?
- sql - 选择父行并包含子行的成本
- python - 我应该如何制作网格并表示一个人在基于文本文件的方向上四处走动?
- sql - ORA-01722: 无效号码 - 收到此错误
- html - 能够在窗口调整大小/变小时时使用 flexbox 堆叠 div
- php - Symfony 5.1 - 在渲染模板期间抛出异常(“URI 的控制器“/_fragment”不可调用”)
- python - runpy 可以安全使用吗?
- java - 将自定义对象从位置 OnClick 添加到自定义 ArrayList