- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为了构建渲染树,浏览器需要 DOM 和 CSSOM。 CSSOM 只能在下载 CSS 后构建。从本质上讲,一旦 CSS 下载完毕,页面就应该可以正确呈现了。但是,为什么我们会在页面上看到 Flash Of Unstyled Content(FOUC)?浏览器在什么时间窗口显示无样式的内容?
请帮助我理解这一点。
最佳答案
我仍然不同意接受的答案,因为根据关键渲染路径,在构建渲染树(DOM + CSSOM)之前,在正常情况下无法在屏幕上绘制任何内容。
我发现这篇 Google 文章乍一看有些令人困惑,但如果我们仔细查看以下声明,它就会变得不那么矛盾:
“如果我们尝试在 CSS 上不阻塞渲染渲染一个典型页面会发生什么?”。 (然后以纽约时报 FOUC 作为行为示例不阻止渲染。)
从历史上看,FOUC 在不同的浏览器版本和不同的情况下因不同的原因而发生。
例如根据this ancient article如果某些 JS 试图访问具有布局/样式信息的属性,我们可能会在 web kit 中遇到 FOUC。
Web Kit has the opposite behavior and will continue parsing a page even after a style sheet directive has been encountered so that style sheet and script loads can be parallelized. That way everything can be ready for display much earlier.
The problem with this behavior is what to do when a script attempts to access a property that involves having accurate layout/style information to answer. Shipping Safari’s current behavior when this happens is as follows: it will go ahead and lay out what it’s got even though it doesn’t have the style sheet yet. It will also display it. This means you see FOUC whenever a script tries to access properties like scrollHeight or offsetWidth before the style sheet has loaded.
因此,当我们说“FOUC 发生”时,应该对它发生在什么情况下以及在什么浏览器中,因为它没有“只是”无处不在。
关于html - 如果 CSS 是渲染阻塞的,为什么我们会看到 FOUC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53220261/
This page在轮播中显示图像集合。轮播由 jQuery infinite carousel plugin 提供.目前,插件和调用它的我的 JS 代码加载在 中。 . 在启动轮播代码之前,会出现
我的网站上出现了一些没有样式的内容,这让我很头疼。第一次访问它时,您会在实际加载到屏幕上之前看到未设置样式的内容: 您可以在这里亲自查看:http://galaxynode.com 我对 html 不
WebKit 一直让我非常恼火:在页面加载时,它会生成一个 transition 的动画。来自初始的浏览器默认值。我有类似的东西 a:link { color: black; -web
我读了一篇又一篇文章,告诉我使用@import 时会出现 FOUC,您可以在 header 中使用链接或脚本标签来解决问题。我没有用于 css 文件的 @imports,我已经尝试了链接和脚本标签解决
当我创建一个新的 BrowserWindow 并使用 loadURL 在渲染器中使用一个 html 文件时,我猜在加载 css 之前我可以看到一闪而过的无样式内容半秒钟。 window.loadURL
我的通用应用程序有一个问题,当服务器端应用程序换成客户端应用程序时,有一段时间组件没有样式,这些组件是该页面的路由组件的一部分。这会导致页面正确加载,然后在 self 整理之前暂时显示一闪而过的无样式
我正在研究 a site有很多 Javascript 和 jQuery——据我所知,其中大部分是在文档准备好后触发加载的。但是,当页面加载时,您会看到大约一秒钟的白色 FOUC。但是,如果你完全禁用
我正在使用一种简单的技术来防止我的页面出现 FOUC。我的页面上有一个“反馈”滑动按钮,最初在我的样式表中设置了 display:none。稍后,当加载 JS 并加载滑动代码时,我将 .css('di
我对这个网站上伪元素的 FOUC 有疑问: 每个菜单选项的代码: Questions about Oslo 我给每个 .module 一个带有伪元素的图标,如下所示:
我在我测试过的任何其他浏览器(IE、Chrome、Opera)中都没有看到这个问题,但每当我从服务器加载页面时,我都会在应用 CSS 之前看到一闪而过的无样式内容仅在 Firefox 中。 您可以在您
我有一个带有 owlSlider 的响应式画廊,问题是当我重新加载页面并且图像在脚本之前加载时,我将脚本放在 之前标签。 我正在尝试使用延迟和异步,但这不起作用。 这是您重新加载我的页面时的结果:
我有以下网站: http://cassidoo.public.iastate.edu/ 我正在为我的菜单使用 JQuery UI 选项卡。当您加载页面时,选项卡中的内容会闪烁。 我已经尝试了从 ui-
我在第一次加载时遇到文本闪烁的问题。 我尝试了在互联网上找到的所有解决方案,但没有一个奏效... 我的 angular-translate 版本是最新的 2.4.2。 这是示例 HTML:
问题的实质如下: 有一个页面,我需要修改浏览器扩展的内容,可以使用jQuery。 已尝试 $(document).ready(),但内容仍会短时间显示 (FOUC)。我无法更改服务器上的页面样式。 我
我使用 Polymer.js 制作了一个网站,并广泛使用模板。 URL 端点页面上只有很少的内容,并导入一个充当母版页的模板,并且在每一个页面上我都为页眉、页脚等导入其他元素模板。 这允许非常快速的页
因此,当我在 ( https://notes-noted.herokuapp.com) 浏览我的应用程序时,我看到了无样式 CSS 的闪烁。我正在链接到应用程序文件头部的样式表。我的头部部分看起来像这
为了构建渲染树,浏览器需要 DOM 和 CSSOM。 CSSOM 只能在下载 CSS 后构建。从本质上讲,一旦 CSS 下载完毕,页面就应该可以正确呈现了。但是,为什么我们会在页面上看到 Flash
我已经从 create-react-app 构建了 react.js 网站。但是在生产模式下,存在 FOUC,因为在渲染 html 之后加载样式。 有什么办法可以解决吗?我一直在谷歌上搜索答案,但还没
我使用 jQUery UI 选项卡动态创建多个选项卡——这些选项卡是使用 foreach 创建的在 View 页面上如下(一些 codeigniter 标记): $(function($) {
我有一个页面,上面有几个按钮,上面有一个类。当页面加载时,我在就绪函数中使用 jQuery UI .button 函数将这些按钮转换为 jquery UI 按钮。 我希望这些按钮在页面加载时与页面完全
我是一名优秀的程序员,十分优秀!