自Chrome发布版本62以来,我遇到了CSS visibility
规则的问题。
例如,我的代码中使用style.visibility = "hidden"
设置的元素在屏幕上仍然可见 - 即使我可以看到此元素的css visibility
规则在开发人员中设置为hidden
控制台面板。
抱歉,我无法制作MCVE,但这里是a live example 例如,检查'新游戏' 按钮或'说明' 按钮,它们不应该是可见的。
我的应用程序在此之前正在运行,并且它们在所有其他浏览器上运行良好,但在Chrome 62中,它会越来越多。
答案 0 :(得分:0)
这确实是一个chrome bug甚至可以触及谷歌自己的产品。 感谢PaulR的链接。
他们正在努力, *但是暂时,我可以在你的网站上测试的一个解决方法就是附加一个全局
* {
transition: visibility 0.01s;
}
在设置visibilty
规则之前,请先在CSS中进行规则。
这将确保计算并正确绘制每个可见性更改,从而消除错误 但要注意,它也可能导致所有非bug浏览器的性能成本......
* 现在应该在最新的金丝雀(64)
中修复以下是我用于在您的网页上测试此理论的用户脚本:
// ==UserScript==
// @name visibility fix
// @include http://www.pearsonplaces.com.au/portals/0/JennyS/HTML5Templates/bullsEye/bullsEye.html
// @version 1
// @grant none
// @run-at document-start
// ==/UserScript==
var s = document.createElement('style'); // create a style element
document.head.appendChild(s);
s.textContent = '*{transition: visibility .01s}'; // set the transition to all the elements
Ps:如果你只有一个元素发生了这个错误,另一个解决方法可能就是改变元素的位置,然后强制重排并改回元素的位置,但是IMM它&& #39;更难实现,因为它需要修改设置了可见性规则的所有js代码,而且我甚至不确定它对性能是否有益。