TailwindCSS - 在“浅色”、“深色”或“系统设置”之间切换颜色主题

时间:2021-03-05 19:55:27

标签: javascript php laravel laravel-8 tailwind-css

TailwindCSS 提供了 2 种不同的方式来在您的网站上启用暗模式。


首先通过媒体,这意味着如果您的操作系统支持暗模式并激活它,您的网站将自动以暗模式显示(如果您定义了它)。

tailwind.config.js

module.exports = {
    darkMode: 'media',
};

第二次通过类,这意味着如果您的 < html > 标签指定了 class="dark",您的网站也将显示在暗模式(如果你定义了它)。

tailwind.config.js

module.exports = {
    darkMode: 'class',
};

是否有一种简单的方法可以同时使用这两个选项?

我想要达到的效果是用户可以在LightmodeDarkmode系统设置

之间设置他们的偏好

类似于这里使用的堆栈函数溢出

Stackoverflow preference settings


如果 TailwindCSS 无法直接使用此选项,那么最简洁、最简单的解决方法是什么?


关于我的项目的信息:

  • TailwindCSS
  • Laravel 8
  • 强化
  • 急流
  • Livewire

谢谢里昂

1 个答案:

答案 0 :(得分:2)

我的项目中有完全相同的用例。我通过使用类模式和媒体观察器来解决它。您需要在页面加载、更改设置以及事件触发时设置类。

const setTheme = (isDark) => {
  document.documentElement.classList.remove('dark');
  if (isDark) {
    document.documentElement.classList.add('dark');
  }
};

if (settingIsAuto) {
  setTheme(window.matchMedia('(prefers-color-scheme: dark)').matches);
}

window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => {
  const newIsDark = e.matches;
  if (settingIsAuto) {
    setTheme(newIsDark);
  }
});

// watch for settings changes