使用许多 Flexbox、图像图标、字体时减少页面显示闪烁

Bas*_*asj 5 html javascript css fonts flicker

我有一个 HTML 页面,其中有许多用途flexbox和一些div带有 CSS 的图标background-image

在浏览器中打开 HTML 页面(即使在本地,不使用网络)时,会出现一些闪烁(可能不到 100 毫秒,但仍然存在):

  • 有些项目移动了几个像素(因为flexbox居中)

  • 某些图标需要几毫秒才能加载

  • 字体需要几十毫秒来加载,因此我们可以看到使用默认字体(可能 < 50 毫秒)显示的内容,然后使用正确的字体(@font-face...)

如何要求浏览器仅<div class="header-toolbar">在准备好以明确方式 100% 绘制时才显示/显示 HTML 元素(例如工具栏)(无需进一步移动/闪烁)?

Ali*_*ems 1

这个方法对我有用:

  1. 首先,将display: none;opacity: 0;visibility: hidden;可以)添加到您的<body>.
  2. 制作两个函数:
function loaded() {
  // Change 'block' to default display value of your body element.
  document.querySelector('body').style.display = 'block';
}

requestAnimationFrame(loaded);
Run Code Online (Sandbox Code Playgroud)