如何使用 vuetify 为 markdown-it-vue 插件启用暗模式

How to enable dark mode for markdown-it-vue plugin with vuetify

我正在尝试在我的 Vue 应用程序中显示一些文档。由于它们是基于 markdown 格式的,所以我已经包含了 markdown-it-vue 插件。

但是,该插件不支持 vuetify 黑暗模式。有什么办法可以支持吗?下面是一个最小的例子。我想用白色突出显示文本,用灰色突出显示 table 背景。也许 markdown-it-vue.css 需要更改,但我不确定该怎么做。提前致谢!

const vm = new Vue({
  el: "#app",
  data() {
    return {
      content: "This needs to be white\n| Item | Price | # In stock |\n|--------------|-----------|------------|\n| Juicy Apples | 1.99 | *7* |\n| Bananas      | **1.89** | 5234 |"
    }
  }
})
<link href="https://cdn.jsdelivr.net/npm/vuetify@1.2.2/dist/vuetify.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.2.2/dist/vuetify.min.js"></script>
<script src="https://unpkg.com/markdown-it-vue@1.1.6/dist/markdown-it-vue.umd.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/markdown-it-vue@1.1.6/dist/markdown-it-vue.css">

<div id="app">
  <v-app :dark="true">
    <markdown-it-vue :content="content"></markdown-it-vue>
  </v-app>
</div>

markdown-it-vue 的内容可以使用 CSS 设置样式,因此您可以将自己的深色主题应用于 Markdown 内容。 Vuetify 在 app 根元素上设置 .theme--dark class,markdown-it-vue 的元素有 .markdown-body class.

.theme--dark .markdown-body 上,应用 color!important 来覆盖 Vuetify 的主题:

.theme--dark .markdown-body {
  color: white !important;
}

同样在其所有 table children 上(即在 table * 上)应用 background 颜色::

.theme--dark .markdown-body table * {
  background: gray;
}

const vm = new Vue({
  el: "#app",
  data() {
    return {
      dark: true,
      content: "This needs to be white\n| Item | Price | # In stock |\n|--------------|-----------|------------|\n| Juicy Apples | 1.99 | *7* |\n| Bananas      | **1.89** | 5234 |"
    }
  }
})
.theme--dark .markdown-body {
  color: white !important;
}

.theme--dark .markdown-body table * {
  background: gray;
}
<link href="https://cdn.jsdelivr.net/npm/vuetify@1.2.2/dist/vuetify.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.2.2/dist/vuetify.min.js"></script>
<script src="https://unpkg.com/markdown-it-vue@1.1.6/dist/markdown-it-vue.umd.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/markdown-it-vue@1.1.6/dist/markdown-it-vue.css">

<div id="app">
  <v-app :dark="dark">
    <v-btn @click="dark = !dark">Toggle dark mode</v-btn>
    <markdown-it-vue :content="content"></markdown-it-vue>
  </v-app>
</div>