【发布时间】:2021-08-02 22:50:00
【问题描述】:
我正在使用 css 设计一个下拉菜单,我想知道,使用 opacity: 0 + pointer-events: none 而不是使用 display: none 有什么缺点吗?
我想在悬停时淡入/淡出。但dispaly 方式使它瞬间完成。并且不想做任何javascript。所以,
- 有什么方法可以在没有javascript的动画结束后制作
display: none? - 使用
opacity: 0+pointer-events: none代替display: none有什么副作用吗?
#trigger{background-color: red}
a{
opacity: 0;
transition: 500ms 200ms;
pointer-events: none;
}
#trigger:focus +ul a{opacity: 1;
pointer-events: all
}
<!DOCTYPE html>
<html>
<body>
<button id=trigger>Trigger</button>
<ul>
<a href="#">a<br></a>
<a href="#">b<br></a>
<a href="#">c<br></a>
</ul>
</body>
</html>
这说明了问题。当它被隐藏时,我无法悬停或看到它们,这就是我想要的。但是当你按 tab-tab-tab 时,你可以得到它们。 (点击触发显示菜单,点击其他地方隐藏)
【问题讨论】:
-
这个问题有点缺乏焦点——你在一篇文章中问了几个问题。回答您关于
opacity: 0和pointer-events: none的问题:其中一个主要问题是仅使用键盘的用户仍然能够集中您的元素,因此它们实际上始终可用/可见。并且删除键盘交互来实现这种效果基本上会使应用程序无法访问,所以如果这是您接下来要考虑的事情,我建议您不要使用这种方法。 -
感谢您提供此信息!我会尽量避免这种情况。你能谈谈实现淡入淡出动画并让它不显示吗?
-
如果您包含minimal reproducible example,我可能会向您展示它如何与您的代码一起使用。
-
@AlexanderNied 我已经添加了。为了简单起见,它是通过焦点而不是悬停来完成的。
标签: css animation opacity display