javascript - 显示前在 Firefox 中闪烁“显示:无”的图像
问题描述
我有一系列图像,我想一次显示一个。所有其他图像都用 隐藏display: none
。问题是,虽然我正在等待所有图像完成请求,但当我更改要显示的图像时,图像会闪烁。这是一个例子:
该问题仅在 Firefox 中发生。我还使用上面的示例创建了一个 JSFiddle:https ://jsfiddle.net/ofte9g5v/7/
我能够使用opacity
属性实现预期的行为,但我仍然想知道为什么第一种方法不起作用,因为它是最直接的解决方案,也适用于所有其他浏览器。
编辑:我忘了提到图像仅在第一次加载时才会闪烁。
解决方案
您正在使用 JavaScript 在两个单独的调用中切换可见性;首先更改可见图像的 CSS 样式,将其display
属性设置为none
. 看起来 Firefox 选择了这一点并且比其他浏览器更快地绘制,导致没有图像显示。接下来,您将 设置display
为block
其他图像之一,提示它按预期绘制。
通常,当您想在这样的图像之间切换时,您需要使用 CSS 堆叠图像以防止这些不良影响。过渡组是处理隐藏、过渡、可见和过渡之间的过渡状态的有用工具。在这种情况下,您可以使用一点 CSS:
.imageContainer {
position: relative;
width: 100%;
padding-bottom: 100%;
}
.img {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
object-fit: cover;
z-index: 1;
}
然后,当您要显示图像时,只需将其z-index
属性设置为2
或更高,然后将z-index
所有其他图像的属性设置为1
之后。
推荐阅读
- macos - 未找到 PHPMYADMIN(Homebrew、BigSur、M1 CHIP)
- android - Firebase onDataChange Listener 是否总是在应用程序关闭后自动删除?或者,不是而且账单也在增加?
- linux - 如何检查进程是否连接到 X11 unix socket
- php - 在 Codeigniter 3 中验证电子邮件
- javascript - 常用表达
- c - 地址处的不可读指令
- javascript - 类型错误:createButtonCollector 不是函数
- javascript - 用户在 Ionic 中登录/注册后缺少底部导航
- python - 如何从张量流中的张量中删除无穷大值?
- ios - 附加到我的购物车视图 SWIFTUI 时如何仅显示唯一项目