ブログをダークモードに対応させた。Tailwind CSS を使っていればすぐにできるので前々からやりたいとは思っていた。tailwind.config.js の置き場所を間違えていたせいでカスタマイズが全然できていなかったのが解消されたため、これを期にと言う感じ。やったのは以下のものだけ。
module.exports = {
purge: {
content: ['content/**/*.md'],
},
darkMode: 'media',
};
<template>
<div class="dark:bg-black dark:text-white">
<div class="max-w-screen-sm px-4 py-4 mx-auto text-base leading-loose">
<TheHeader />
<main>
<Nuxt />
</main>
</div>
</div>
</template>
@apply
を使っているが DOM 構造を縛らないので許容としている(本来要素そのものにスタイルを当てるべきではない)dark:
で対応させるために currentColor を指定<style lang="postcss" scoped>
::v-deep blockquote {
@apply p-2;
@apply italic;
@apply border-l-4;
@apply bg-gray-100 dark:bg-gray-900;
@apply text-gray-600 dark:text-gray-200;
@apply border-gray-500 dark:border-gray-800;
}
::v-deep a {
@apply text-blue-800;
@apply dark:text-blue-400;
@apply underline;
}
::v-deep a:visited {
@apply text-purple-900;
@apply dark:text-purple-400;
}
svg {
fill: currentColor;
}
</style>
content: {
markdown: {
rehypePlugins: [
'rehype-plugin-image-native-lazy-loading',
[
'rehype-plugin-auto-resolve-layout-shift',
{ type: 'maxWidth', maxWidth: 640 },
],
],
prism: {
theme: 'prism-themes/themes/prism-material-dark.css',
},
},
},
head.bodyAttrs.class
に色指定色味は暫定なので目が痛いとかあればフィードバックください。