VitePress 自定义 CSS 指南

devtools/2024/9/24 20:21:57/

VitePress 是一款基于 Vite 和 Vue 3 的静态网站生成器,专为文档编写而设计。尽管 VitePress 提供了丰富的默认主题,但在某些情况下,我们可能需要对其进行更深入的定制以满足特定的视觉需求。本文将详细介绍如何通过覆盖根级别的 CSS 变量来自定义 VitePress 的默认主题 CSS。

覆盖根级别的 CSS 变量

VitePress 的默认主题使用 CSS 变量来定义颜色、字体、阴影等样式属性。通过覆盖这些变量,我们可以轻松地调整整个站点的视觉风格。

步骤 1: 创建自定义 CSS 文件

首先,在你的 VitePress 项目中,创建一个自定义 CSS 文件。例如,在 .vitepress/theme 目录下创建一个名为 custom.css 的文件。

mkdir -p .vitepress/theme
touch .vitepress/theme/custom.css

步骤 2: 覆盖 CSS 变量

custom.css 文件中,你可以覆盖任何你希望改变的 CSS 变量。以下是一些示例:

/* .vitepress/theme/custom.css */
:root {--vp-c-brand-1: #646cff; /* 更改品牌主色调 */--vp-c-brand-2: #747bff; /* 更改品牌次色调 */--vp-c-text-1: #333; /* 更改主文字颜色 */--vp-c-bg: #f4f4f4; /* 更改背景颜色 */
}

步骤 3: 引入自定义 CSS 文件

接下来,你需要在自定义主题入口文件中引入这个 CSS 文件。如果你的项目结构遵循 VitePress 的默认布局,这个文件通常是 .vitepress/theme/index.js

// .vitepress/theme/index.js
import DefaultTheme from 'vitepress/theme'
import './custom.css' // 引入自定义 CSSexport default DefaultTheme

步骤 4: 覆盖黑暗模式下的样式

如果你的站点支持黑暗模式,你还需要考虑在 .dark 类下覆盖相应的 CSS 变量。

/* .vitepress/theme/custom.css */
.dark {--vp-c-brand-1: #ff646c; /* 黑暗模式下的品牌主色调 */--vp-c-brand-2: #ff747b; /* 黑暗模式下的品牌次色调 */--vp-c-text-1: #eee; /* 黑暗模式下的主文字颜色 */--vp-c-bg: #333; /* 黑暗模式下的背景颜色 */
}

示例:完整 CSS 变量列表

VitePress 的默认主题使用了大量的 CSS 变量,涵盖了颜色、字体、阴影、布局等各个方面。以下是一个简化的 CSS 变量列表示例,展示了你可以覆盖的一些常见变量:

:root {--vp-c-brand-1: #646cff; /* 品牌主色调 */--vp-c-text-1: #333; /* 主文字颜色 */--vp-c-bg: #fff; /* 背景颜色 */--vp-font-family-base: 'Inter', sans-serif; /* 基础字体 */--vp-code-font-size: 0.875em; /* 代码字体大小 */--vp-code-block-bg: #f8f8f8; /* 代码块背景颜色 *//* 更多变量... */
}

结论

通过覆盖根级别的 CSS 变量,你可以轻松地自定义 VitePress 站点的视觉风格。这包括颜色、字体、阴影等多个方面,使你的文档网站更具个性和专业感。记得在自定义主题入口文件中引入你的 CSS 文件,并确保在黑暗模式下也进行适当的样式调整。希望这篇文章能帮助你更好地掌握 VitePress 的 CSS 定制技巧!


http://www.ppmy.cn/devtools/108360.html

相关文章

串口与Labview通讯的调试

在学习Labview和串口的通讯和调试的时候。首先必须先了解一些Labview的基础知识,然后就是了解串口,在调试的过程中,我们需要下位机来辅助我们的程序编写与调试,也就是我们平时使用的单片机,如果没有单片机也不要紧&…

官方宣布Navicat可以免费使用了!

前言 好消息,前不久Navicat推出了免费精简版的数据库管理工具Navicat Premium Lite,可用于商业和非商业目的,我们再也不需要付费、找破解版或者找其他免费平替工具了,有需要的同学可以马上下载使用起来。 工具官方介绍 Navicat…

Python 2.x和Python 3.x在语法上有哪些主要差异?

Python 2.x和Python 3.x在语法上存在诸多主要差异,这些差异不仅影响了代码的编写方式,还影响了代码的兼容性和可移植性。以下是对这些差异的详细分析: 1. 编码方式 Python 2.x:默认采用ASCII编码,这导致在处理非ASCI…

江协科技stm32————11-4 SPI通信协议

目录 SPI外设简介 SPI框图 波特率控制 SPE(SPI使能) 配置主从模式 四种模式的选择 发送和接收数据缓冲区状态 I2C基本结构 1. SPI模式选择 2. 时钟极性和相位(CPOL和CPHA) 3. 波特率设置 4. 数据帧格式 5. NSS引脚管…

Java:一段编程语言的传奇——从绿团队到全球开发者的首选

目录 1. 起源:绿团队与Java的诞生 2. Java的腾飞:从网页到企业级应用 3. 挑战与竞争:Java的坚韧成长 4. 智能手机的兴起:Java的再生 5. Java的未来:持续进化与社区支持 结语:Java的未完传奇 在编程语…

Github 2024-09-07Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-09-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10CUE项目1Python项目1Go项目1Polars: Rust中的DataFrame接口和OLAP查询引擎 创建周期:1354 天开发语言:Rust, Python协议类型:MIT …

AI模型:追求全能还是专精?-- 之6 语言复杂度类别(Category 0~3 类)和语言功能性类型(Type 0~Ⅲ 型)之2

Q17、我前面说过,语言复杂度的0~3级(Category 0~3)表示了语言的的上下文相关性 : 完全不相关, 单相关的 单词上下文, 双相关的句子上下文 全相关的文章上下文 。我准备翻译为 Context - irrelative /relati…

Java获取小程序码示例(三种小程序码)

首先我们可以看到官方文档上是有三种码的 获取小程序码 这里特别要注意的是第一种和第三种是有数量限制的,所以大家生成的时候记得保存,也不要一直瞎生成 还有一点要注意的是第一种和第二种是太阳码 第三种是方形码 好了直接上代码 这里要注意&#xff…