当我将鼠标悬停在页面上时,我注意到页面上的按钮闪烁(会改变不透明度)。经过一番挖掘,发现每次样式更新时,浏览器都会重新下载该图像。
这发生在 Mac Chrome 74 和 Safari 上。Firefox 看起来不错。
这些按钮使用带有 CSS 变量的 background-image 样式,代码如下所示:
body {
--src-image: url("some image");
}
.btn {
background-image: var(--src-image);
}
.btn:hover {
opacity: 0.7;
}
Run Code Online (Sandbox Code Playgroud)
代码笔:https ://codepen.io/polyamide/pen/qzEVzO
复现步骤:
避免使用 css 变量解决了问题,但我仍然想了解为什么会发生这种情况,我该如何解决?
小智 0
我在 Safari 和 Firefox 中也遇到同样的问题。不闪烁的唯一方法是不使用图像变量:
background-image: url("some image");
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多解决方案,例如添加以下内容:
-webkit-transform-style: preserve-3d;
Run Code Online (Sandbox Code Playgroud)
但这些“解决方案”根本不起作用。