【问题标题】:I need to force IE 6, 7, and 8 wait until CSS is loaded before rendering the page [closed]在渲染页面之前,我需要强制 IE 6、7 和 8 等到加载 CSS [关闭]
【发布时间】:2012-04-26 01:07:32
【问题描述】:

我正在构建一个响应式网站http://50.97.104.102/~topdog/。由于桌面 css 出现在样式表的底部,因此页面在移动布局中呈现半秒(徽标出现在中心)。然后切换到桌面格式。这仅在 IE 6、7 和 8 中发生。这是一个非常微妙的问题,仅持续半秒。大多数现代浏览器(我使用 chrome)似乎要等到所有 css 都加载完毕后再渲染页面。

有没有办法强制 IE 6,7 和 8 等到整个 CSS 文件加载完毕后再渲染页面?最好没有javascript。

【问题讨论】:

  • 你有没有试过在你服务于 IE 时把 CSS 放在顶部?
  • 您是否尝试过将 css 放在顶部。如果您使用媒体

标签: javascript internet-explorer css webpage


【解决方案1】:

你可以使用下面的 CSS

body {
  visibility: hidden;
}
body.finished {
   visibility: visible;
}

然后从 onload 处理程序将完成的类添加到主体。

如果没有 JS,这将无法工作。如果你想让它在没有 JS 的情况下工作,你可以执行以下操作,如果 JS 被禁用,则会出现闪烁,但如果 JS 被启用,则会消除闪烁。

body.not-ready{
   visibility: hidden;
}

<body>
<script>
  $(document.body).addClass('not-ready');
  $(window).load(function(){
    $(document.body).removeClass('not-ready')
  });
</script>

</body>

【讨论】:

  • 甚至不需要做 JS。他可以将第一个声明放在顶部,将第二个声明放在最底部。在我看来他只有一个样式表,所以这不是样式表冲突的问题。
  • 如果 JavaScript 被禁用,页面将永远隐藏。
  • Juan,这听起来是个好主意,但我希望该网站能够在没有 js 的情况下运行。如果我通过 js 将 .finished 类添加到正文中,那么如果 js 关闭,则所有内容都将隐藏。尼克斯,我喜欢你的想法。它似乎有效。
  • @Stratus3D 增加了优雅降级的解决方案,即解决了JS的问题,但是关闭了JS还是显示页面
  • Jaun Mendes,你的 js 的第一行应该放在 中(在正文开始加载之前)。同样为了获得最佳性能,您不应该依赖 jQuery 来隐藏正文。 jQuery 可能会加载到页脚中。
猜你喜欢
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
相关资源
最近更新 更多