当前位置: 首页 > article >正文

VitePress 自定义 CSS 指南

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' // 引入自定义 CSS

export 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.kler.cn/news/294825.html

相关文章:

  • docker基础命令总结
  • 流程图符号速查:快速掌握流程图绘制要点
  • Kafka【十二】消费者拉取主题分区的分配策略
  • NISP 一级 —— 考证笔记合集
  • RISC-V (十二)系统调用
  • python网络爬虫(五)——爬取天气预报
  • 风趣图解LLMs RAG的15种设计模式-第一课
  • 自然语言处理系列六十二》神经网络算法》MLP多层感知机算法
  • 【C/C++】web服务器项目开发总结【请求 | 响应 | CGI】
  • 活动系统开发之采用设计模式与非设计模式的区别-非设计模式
  • Java stream使用与执行原理
  • 通信工程学习:什么是SSB单边带调制、VSB残留边带调制、DSB抑制载波双边带调制
  • Web前端主流的框架详解
  • 基于大数据的科研热点分析与挖掘系统
  • 数学建模_数据预处理流程(全)
  • 命名空间,using声明,指令与作用域,重载与namespace
  • 智慧工地解决方案-2
  • 架构全景视图
  • lxml官方入门教程(The lxml.etree Tutorial)翻译
  • 超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。
  • 类和对象的定义和调用演示(C++)
  • CSS-动态计算高度
  • [数据集][目标检测]街道乱堆垃圾检测数据集VOC+YOLO格式94张1类别
  • ELK学习笔记(一)——使用K8S部署ElasticSearch8.15.0集群
  • Python条件表达式优化的10个实例
  • Springboot集成WebSocket客户端,发送消息并监测心跳
  • Ansible与Docker集成:实现容器化运维自动化
  • 浙大数据结构:02-线性结构1 两个有序链表序列的合并
  • [数据集][目标检测]西红柿成熟度检测数据集VOC+YOLO格式3241张5类别
  • 网络协议-SSH