【问题标题】:Visibility hidden does not work on Microsoft Edge with CSS content: url();隐藏的可见性在带有 CSS 内容的 Microsoft Edge 上不起作用:url();
【发布时间】:2019-04-08 17:57:33
【问题描述】:

见小提琴: https://jsfiddle.net/8wk0tsnL/8/

有问题的部分是这个(适用于 FF、Chrome、IE,但不适用于 Edge):

.testclass:after {
  content: url(http://placekitten.com/96/139);
  visibility:hidden;
}

.testclass:hover:after, .testclass:hover:before {
  visibility:visible;
}

图像没有隐藏在 Edge 中。如果将content: url(...); 替换为文本字符串content: "example";,它在Edge 中可以正常工作。

这是一个错误吗?任何已知的解决方法?

(Edge 的浏览器市场份额不到 5%,所以我不想用非常奇特或支持稀少的解决方案污染我的代码)。

【问题讨论】:

  • 是的,这是一个错误。实际上是一种回归,因为它曾经在 IE 中工作!
  • @BoltClock 是的,它在 IE 中工作。奇怪的是,在 Edge 中,它适用于文本,但不适用于图像。我试图在 Edge 开发者的网站上搜索,但没有立即找到。我假设,因为它是一个已知的错误,它已被标记?
  • 不知道为什么这被否决了。我在 SO 上进行了搜索,但没有找到任何其他对这个 bug 的引用...

标签: css visibility microsoft-edge hidden


【解决方案1】:

我建议你使用 opacity 属性,一旦你可以使用过渡使其平滑,顺便说一下,使用 opacity 有一个缺点,它隐藏元素但仍然具有可点击区域。

.testclass:after{
   content: url(http://placekitten.com/96/139);
   opacity: 0;
}

.testclass:hover:after{
   opacity: 1;
}

【讨论】:

  • canius.com 参考不是重点(它涉及页面可见性 API,请参阅developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API,因此与 CSS 属性无关。感谢opacity 的建议。我更新了Fiddle (jsfiddle.net/8wk0tsnL/9),它在视觉上有效,但是如果您将鼠标悬停在隐藏元素本身上,隐藏的内容也会显示出来(它也保持“可点击”)。不是最佳的,但我可能只为 Edge 实现这个(使用 Edge 的 CSS 浏览器 hack)。如果您可以用这两点更新您的答案,我可以接受。
  • 好吧,所以我建议你使用display 而不是opacity 它会删除可点击区域,关于更新的我的答案我不明白,你能更好地解释或建议给我一个编辑?谢谢!!
  • 嗨,抱歉,我没有提到 display 不是合适的解决方案,因为转换不适用于此(在我的情况下这是重要的功能)。对于编辑:(1)删除对 canius.com 网站的引用,因为这与问题无关(请参阅我之前的评论),并且(2)您可以添加 opacity 具有可点击区域的缺点.谢谢。
  • 哦,我不知道显示没有,顺便说一句,更新了答案,谢谢!!
猜你喜欢
  • 2012-08-28
  • 2014-02-15
  • 2016-09-29
  • 2019-02-14
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 2016-11-25
相关资源
最近更新 更多