css - Safari 网页检查器元素闪烁
问题描述
我遇到了一个奇怪的野生动物园错误。该错误是可视的,某些样式没有显示出来,但是当我在网络检查器中检查时,我注意到受影响的元素正在闪烁。
看起来他们正在从反应中安装和卸载,但情况并非如此,因为 js 检查器显示没有任何事情发生。
相反,它显示样式无效,然后在循环中重新计算。
什么可能导致这种情况?
附上截图。
谢谢!
解决方案
问题
这是由常见的 CSS 重置和 Webkit 呈现伪元素的方式最近发生的变化引起的。你的css中可能有类似的东西。
*:before, *:after {
box-sizing: border-box;
}
任何属性都会触发此错误,但box-sizing
很常见,因为它是引导程序脚手架重置的一部分。
修复
删除所有样式规则*:before, *:after
。您不能使用级联来覆盖这些样式,因为此选择器的任何样式规则都会触发该错误。
为什么会发生
我相信分配的属性会*:before, *:after
导致 Webkit 的最新版本在重绘发生时为所有元素评估这些伪元素。您可以通过使用 Web 检查器将任何样式规则添加到*:before, *:after
选择器来在任何网站上重现此效果。当您调整大小时,将触发重绘,您会看到:before
并:after
闪烁进出,当浏览器评估伪元素时,没有子元素的元素将短暂显示一个展开三角形。
在具有大量元素的页面上,这会导致 Webkit 浏览器出现性能问题,因为它有效地将重绘期间评估的元素数量增加了三倍。
推荐阅读
- c - 如何让函数在 C 中返回自己的类型?
- python - (haystack + elasticsearch) {{ result.object.get_absolute_url }} 不起作用(我有 get_absolute_url() 方法)
- android - 如何在 Android 11 的后台查看蓝牙的状态(开/关)?
- c - c语言中的TCP客户端/服务器
- c - 如何将库头添加到公共范围
- javascript - 将 EJS 上呈现的数组传递给 Chart.js
- assembly - 将指令数修改为一条
- python - 找不到 numpyro.render_model
- python - 将 yolov4-tiny 转换为 transflow lite: ValueError: cannot reshape array of size 374698 into shape (256,256,3,3)
- flutter - 如何检查一组文本编辑控制器以查看它们是否为空?