隐藏元素时的可见性切换

Avatar of Robin Rendle
Robin Rendle

Medium 的开发团队讨论了一些 破坏可访问性的不良做法。在一个例子中,他们认为 opacity 不被屏幕阅读器很好地支持,因此如果我们想在过渡中隐藏元素,那么我们应该始终使用 visibility 属性。

.m-fadeOut {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s linear 300ms, opacity 300ms;
}
.m-fadeIn {
  visibility: visible;
  opacity: 1;
  transition: visibility 0s linear 0s, opacity 300ms;
}

请记住,opacity 和 visibility 仍然将元素保留在文档流中。如果您需要将其从流中移除,还需要做更多工作。实际上,这里有一个思考它们的方式……

 可以使东西不可见可以使东西不可点击从文档流中移除可以进行过渡可以在子元素上反转
opacity是的是的
visibility是的是的是的是的
display是的是的是的
pointer-events是的

如果您需要在淡出后更改元素的 display 值,那就更难了。在 CSS 中实际上是不可能的,因为 display 不可过渡。 Snook 已经对此进行了描述,包括一些 JavaScript 来帮助实现。