FOUC 开启灯光模式

FOUC on light mode

提问人:amy 提问时间:10/6/2023 最后编辑:DarkBeeamy 更新时间:10/6/2023 访问量:81

问:

我的网站上出现了一些无样式 (FOUC) 内容的问题。我有一个按钮可以在深色和浅色模式之间切换,默认为深色模式。

因此,在浅色模式下刷新页面时,您可以在应用浅色模式之前看到深色模式的 FOUC......我想知道如何阻止这种情况发生。

$(function() {
  var switched = $('#mode');

  switched.on("change", function() {
    if (switched.is(':checked')) {
      $('html').removeClass('dark');
      $('html').addClass('light');
      localStorage.setItem('mode', 'light');

    } else {
      $('html').removeClass('light');
      $('html').addClass('dark');
      localStorage.setItem('mode', 'dark');

    }
  });

  var mode = localStorage.getItem('mode');
  if (mode == 'dark') {
    switched.prop("checked", false);
    $('html').removeClass("light");
    $('html').addClass("dark");
  }
  if (mode == 'light') {
    switched.prop("checked", true);
    $('html').removeClass("dark");
    $('html').addClass("light");
  }

});
:root,
:root.dark {
  --color-bg: #2B2531;
  --color-fg: #FAE5C4;
}

:root.light {
  --color-bg: #DED8F0;
  --color-fg: #2F2131;
}

body {
  background-color: var(--color-bg);
  color: var(--color-fg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>

<head>
  <!--CSS then scripts are written here-->
</head>

<body>
  <div class="boutonmode">
    <div class="darklightmode">
      <input type="checkbox" id="mode">
      <label for="mode" class="form-check-label">Mode</label>
    </div>
  </div>
  <h1>test</h1>
</body>

</html>

JavaScript HTML CSS 暗模式

评论

0赞 Reporter 10/6/2023
“Fouc”是什么意思?
0赞 Teemu 10/6/2023
@Reporter en.wikipedia.org/wiki/Flash_of_unstyled_content
0赞 amy 10/6/2023
“无样式内容的闪烁”,在我的情况下,这意味着在应用浅色样式之前,深色模式会出现一瞬间
0赞 Teemu 10/6/2023
"CSS,然后脚本就写在这里”。这是否意味着您有内联标签,而不是将样式表链接到外部文件?stylehead
1赞 DBS 10/6/2023
您需要等待 JS 运行后才能显示任何内容以避免这种情况,例如,一旦应用了浅色/深色类,就可以删除某种初始加载状态。

答: 暂无答案