Skip to content

VitePress 自定义页面

tailwindcss

Tailwind v4

1、安装依赖

bash
npm install -D tailwindcss @tailwindcss/vite

2、修改 .vitepress/config.js 引入 Vite 插件

js
import { defineConfig } from 'vitepress'
import tailwind from '@tailwindcss/vite'

export default defineConfig({
  vite: {
    plugins: [tailwind()]
  }
})

3、新增 custom.css

css
@import "tailwindcss";

4、引入到 .vitepress/theme/index.js

js
import './custom.css'

5、使用案例

写一个诗歌的卡片PoemCard.md

PoemCard.md 代码
md
[//]: # (<!DOCTYPE html>)

[//]: # (<html lang="zh-CN" class="dark">)

[//]: # (<head>)

[//]: # (  <meta charset="UTF-8">)

[//]: # (  <title>诗歌卡片</title>)

[//]: # (  <!-- 引入Tailwind CDN -->)

[//]: # (  <script src="https://cdn.tailwindcss.com"></script>)

[//]: # (</head>)
<body class="min-h-screen p-10 bg-slate-50 dark:bg-slate-900">
<div class="w-full max-w-md mx-auto rounded-2xl p-6 shadow-lg transition-all duration-300 hover:shadow-xl hover:-translate-y-1
    bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700">
  <div class="flex justify-between items-start mb-4">
    <p class="text-2xl font-bold text-rose-600 dark:text-rose-400 tracking-wide">水调歌头·明月几时有</p>
    <span class="px-2 py-1 rounded text-xs font-medium bg-rose-100 dark:bg-rose-900 text-rose-700 dark:text-rose-200">宋</span>
  </div>
  <p class="text-slate-500 dark:text-slate-400 mb-5 text-sm">作者:苏轼</p>

  <div class="space-y-3 py-4 border-y border-dashed border-slate-200 dark:border-slate-600">
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">明月几时有?把酒问青天。</p>
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">不知天上宫阙,今夕是何年。</p>
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">我欲乘风归去,又恐琼楼玉宇,高处不胜寒。</p>
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">起舞弄清影,何似在人间。</p>
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">转朱阁,低绮户,照无眠。</p>
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">不应有恨,何事长向别时圆?</p>
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">人有悲欢离合,月有阴晴圆缺,此事古难全。</p>
    <p class="text-center text-lg text-slate-800 dark:text-slate-100 font-serif leading-relaxed">但愿人长久,千里共婵娟。</p>
  </div>

  <div class="mt-5 flex flex-wrap gap-2">
    <span class="text-sm font-medium text-slate-600 dark:text-slate-300">标签:</span>
    <span class="px-2 py-0.5 rounded-full text-xs bg-sky-100 dark:bg-sky-900 text-sky-700 dark:text-sky-200">中秋</span>
    <span class="px-2 py-0.5 rounded-full text-xs bg-sky-100 dark:bg-sky-900 text-sky-700 dark:text-sky-200">宋词</span>
    <span class="px-2 py-0.5 rounded-full text-xs bg-sky-100 dark:bg-sky-900 text-sky-700 dark:text-sky-200">怀人</span>
    <span class="px-2 py-0.5 rounded-full text-xs bg-sky-100 dark:bg-sky-900 text-sky-700 dark:text-sky-200">月亮</span>
  </div>

  <div class="mt-4 pt-4 border-t border-slate-100 dark:border-slate-700">
    <p class="text-sm font-semibold text-slate-700 dark:text-slate-200 mb-2">诗文赏析</p>
    <p class="text-sm text-slate-500 dark:text-slate-400 leading-relaxed">
      中秋望月怀人之作,词人借月亮的圆缺喻人间离合,从伤感离别转为豁达祝愿,最后一句成为千古祝福名句。
    </p>
  </div>
</div>
</body>

[//]: # (</html>)

输出

水调歌头·明月几时有

作者:苏轼

明月几时有?把酒问青天。

不知天上宫阙,今夕是何年。

我欲乘风归去,又恐琼楼玉宇,高处不胜寒。

起舞弄清影,何似在人间。

转朱阁,低绮户,照无眠。

不应有恨,何事长向别时圆?

人有悲欢离合,月有阴晴圆缺,此事古难全。

但愿人长久,千里共婵娟。

标签:中秋宋词怀人月亮

诗文赏析

中秋望月怀人之作,词人借月亮的圆缺喻人间离合,从伤感离别转为豁达祝愿,最后一句成为千古祝福名句。

集成Element-Plus

安装依赖

bash
# 安装 element-plus
npm install element-plus
# 图标(可选)
npm install @element-plus/icons-vue
# 自动导入所需插件(可选,推荐,不用手动逐个import组件)
npm install -D unplugin-vue-components unplugin-auto-import

.vitepress/theme/index.ts中导入使用

ts
// 补充缺失导入
import DefaultTheme from 'vitepress/theme'
import { h } from 'vue'
import ElementPlus from 'element-plus'
// 全局引入Element Plus完整样式
import 'element-plus/dist/index.css'

const Theme = DefaultTheme

export default {
  extends: Theme,
  Layout: () => {
    // 保留VitePress默认布局插槽
    return h(Theme.Layout, null, {
      // 你可以在这里自定义插槽:hero、doc-before、footer等
    })
  },
  enhanceApp({ app, router, siteData }) {
    // 全局挂载ElementPlus,全局所有md页面、自定义组件均可直接使用el-xxx组件
    app.use(ElementPlus)  
  }
}

首页显示登录头像