欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

在黑暗模式下切換標簽頁時的閃爍問題:如何解決這個問題?

林子帆2年前8瀏覽0評論

我在Tauri web應用程序的黑暗模式下切換標簽時,隨機遇到了閃爍問題。這種閃爍可能是由瀏覽器阻塞或操作系統處理標簽切換引起的。我懷疑負責在黑暗和光明模式之間切換的JavaScript代碼可能導致了這個問題。其次,在這個奇怪的錯誤期間,側邊欄意外地關閉并再次打開。

enter image description here

以下是相關Javascript的概述:

const body = document.querySelector('body');
const sidebar = body.querySelector('nav');
const toggle = body.querySelector('.toggle');
const modeSwitch = body.querySelector('.toggle-switch');
const modeText = body.querySelector('.mode-text');

// Check if dark mode preference is stored in localStorage
const isDarkMode = localStorage.getItem('darkMode') === 'true';
// Check if sidebar preference is stored in localStorage
const isSidebarClosed = localStorage.getItem('sidebarClosed') === 'true';

// Set initial state based on stored preferences
if (isDarkMode) {
  body.classList.add('dark');
  modeText.innerText = 'Light mode';
} else {
  body.classList.remove('dark');
  modeText.innerText = 'Dark mode';
}

if (isSidebarClosed) {
  sidebar.classList.add('close');
} else {
  sidebar.classList.remove('close');
}

toggle.addEventListener('click', () => {
  sidebar.classList.toggle('close');
  // Store sidebar state in localStorage
  const isClosed = sidebar.classList.contains('close');
  localStorage.setItem('sidebarClosed', isClosed);
});

modeSwitch.addEventListener('click', () => {
  body.classList.toggle('dark');
  // Store dark mode state in localStorage
  const isDark = body.classList.contains('dark');
  localStorage.setItem('darkMode', isDark);

  if (isDark) {
    modeText.innerText = 'Light mode';
  } else {
    modeText.innerText = 'Dark mode';
  }
});

// Add the 'dark' class to the body element if dark mode preference is stored
if (isDarkMode) {
  body.classList.add('dark');
}

我想知道是否有辦法修改JavaScript代碼或對CSS進行必要的調整,以減輕閃爍問題,并確保側邊欄保持當前狀態,而不關閉和重新打開。我想確保在黑暗模式下標簽之間的平滑過渡。任何見解或建議將不勝感激,如果你需要任何額外的信息或進一步澄清,請不要猶豫地問。謝謝大家!

如果menu中的Dashboard鏈接確實重新加載了頁面,那么您的問題是,在初始(重新)加載頁面時,您默認加載的是Light主題,然后JS執行并應用了Dark主題...這就是你看到閃光的原因

您可以通過在初始頁面加載時加載適當的/dark主題來解決這個問題,這意味著將theme=dark保存在cookie或會話中,并根據其值從后端進行初始加載,而不是通過JS在前端應用它。