TAY
笔记 · · 阅读 144

vue3 tailwindcss 夜间模式

tailwindcss

module.exports = {
    ……
    darkMode: "class",
};

组件里
html

<button type="button" class="p-4 hover:bg-gray-100 dark:hover:bg-gray-900" @click="theme"><svg v-if="themeStyle === 'light'" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="h-4 w-4"><path stroke-linecap="round" stroke-linejoin="round" d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"></path></svg><svg v-else fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="h-4 w-4"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z"></path></svg></button>

javascript

import { ref } from "vue";

const themeStyle = ref('light');

if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
    document.documentElement.classList.add('dark');
    themeStyle.value = 'dark';
} else {
    document.documentElement.classList.remove('dark');
    themeStyle.value = 'light';
}
const theme = () => {
    if (localStorage.theme === 'dark') {
        document.documentElement.classList.remove('dark');
        localStorage.theme = 'light';
        themeStyle.value = 'light';
    } else {
        document.documentElement.classList.add('dark');
        localStorage.theme = 'dark';
        themeStyle.value = 'dark';
    }
};
目录