【问题标题】:Detect when all CSS rules have been applied and painted检测所有 CSS 规则何时被应用和绘制
【发布时间】:2017-08-31 14:25:24
【问题描述】:

在呈现网页的过程中,从加载样式表到应用该样式表中的所有规则并完成绘制之间存在延迟。

此延迟取决于样式表的大小和规则的复杂性。

是否有可靠的方法来检查绘画过程何时完成?

注意:我正在寻找一种在动态应用 CSS 规则时也能工作的方法,即当新样式表添加到页面或样式被 JavaScript 修改时。所以document.onload 不是这里的选项。

上下文:我正在开发一个大型单页应用程序,它可以动态加载样式表。为了避免出现flash of unstyled content,我正在展示一个微调器,我需要确切知道何时隐藏它。

【问题讨论】:

  • 没有这样的活动。
  • @Cerbrus 我知道这一点。但也许有解决方法?也许使用getComputedStyles()requestAnimationFrame()
  • 如果你在样式表上监听“加载”事件,然后在处理程序中,调用setTimeout(没有延迟)给浏览器一点时间来呈现新加载的样式表,然后再隐藏微调器?
  • 我试过了,它在所有规则都被应用之前就被执行了
  • 我想说最可靠的解决方案是在 css 加载事件之后添加一个小延迟......

标签: javascript html css browser paint


【解决方案1】:

我想说最可靠的解决方案是在 css 加载事件之后添加一个小延迟。

类似这样的伪代码:

myCssTag.onload(function(){
    setTimeout(doStuffAfterRender, 100);
});

【讨论】:

  • 我们想要的是 100% 可靠,而不是“最可靠”。
  • @SzczepanHołyszewski:所以你否决了存在的最可靠方法?这是唯一可用的真正选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2012-04-24
相关资源
最近更新 更多