You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt3中如何为@nuxt/content的所有.md页面启用暗色模式?

Nuxt3 + @nuxt/content: 解决.md页面无法设置暗色模式的问题

方案1:通过布局页面读取.md元数据设置colorMode

.md文件的前置元数据不会直接被@nuxt/color-mode识别,需要对应的布局页面接收并应用配置。假设你使用的布局是layouts/page.vue,修改该文件:

<script setup>
// 读取当前内容页的元数据
const { data: page } = useContent()
// 从元数据取colorMode,默认设为dark
const colorModePref = page.value?.colorMode || 'dark'

definePageMeta({
  colorMode: colorModePref
})
</script>

<template>
  <slot />
</template>

之后可在.md文件前置元数据中简化配置:

---
title: Home
navigation: false
colorMode: dark
layout: page
---

方案2:全局强制所有页面启用暗色模式

若无需按页面单独设置,直接全局锁定暗色模式。确保@nuxt/color-mode已安装,修改nuxt.config.ts:

export default defineNuxtConfig({
  modules: ['@nuxt/content', '@nuxt/color-mode'],
  colorMode: {
    preference: 'dark',   // 默认偏好暗色
    fallback: 'dark',     // 系统不支持时 fallback 到暗色
    forced: true,         // 可选:强制锁定,用户无法切换
    classSuffix: ''
  }
})

可在app.vue中主动触发设置,避免缓存影响:

<script setup>
const colorMode = useColorMode()
onMounted(() => {
  colorMode.preference = 'dark'
})
</script>

方案3:利用Document-driven全局配置

启用document-driven模式后,先在content/globals/theme.md定义全局主题:

---
colorMode: dark
---

修改nuxt.config.ts的content配置:

export default defineNuxtConfig({
  modules: ['@nuxt/content', '@nuxt/color-mode'],
  content: {
    documentDriven: true,
    globals: {
      theme: {
        type: 'theme',
        path: 'globals/theme'
      }
    }
  },
  colorMode: {
    classSuffix: ''
  }
})

最后在布局页面读取全局主题并应用:

<script setup>
const { theme } = useContent()

definePageMeta({
  colorMode: theme.value?.colorMode || 'dark'
})
</script>

注意事项

  • 确认@nuxt/color-mode已正确安装(npm install @nuxt/color-mode)
  • 检查是否有自定义插件、布局代码覆盖了colorMode配置
  • 测试前清除浏览器缓存,colorMode偏好会存在localStorage中

内容的提问来源于stack exchange,提问作者shershen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:12:50