just-the-docs SCSS变量详解:控制主题外观的核心
你是否还在为调整文档网站的字体大小、颜色搭配或边距布局而手动修改CSS文件?just-the-docs主题通过SCSS变量系统提供了更优雅的解决方案。本文将详解控制主题外观的核心SCSS变量,帮助你快速定制符合品牌风格的文档网站。读完本文你将掌握:Typography、Colors、Spacing等基础变量的使用方法,以及如何通过颜色方案文件实现明暗主题切换,最后通过实战案例完成个性化定制。
变量系统架构
just-the-docs的样式系统基于模块化SCSS变量设计,主要分布在以下核心文件中:
- 基础变量定义:_sass/support/_variables.scss 包含字体、颜色、间距等基础变量
- 颜色方案:_sass/color_schemes/light.scss 和 _sass/color_schemes/dark.scss 定义主题配色方案
- 自定义入口:_includes/css/custom.scss.liquid 提供用户自定义变量的注入点
变量系统采用!default标志,允许用户在不修改源码的情况下通过自定义文件覆盖默认值,实现无侵入式定制。
Typography变量:控制文本呈现
Typography相关变量定义在_sass/support/_variables.scss第1-26行,决定文档的字体、大小和行高。核心变量包括:
$body-font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Segoe UI Emoji" !default;
$mono-font-family: "SFMono-Regular", menlo, consolas, monospace !default;
$root-font-size: 16px !default; // 已弃用,原用于rem单位基准
$body-line-height: 1.4 !default;
$content-line-height: 1.6 !default;
字体大小采用分级变量设计,从$font-size-1(0.5625rem)到$font-size-10(2.625rem),满足不同层级标题和正文需求。响应式设计通过带-sm后缀的变量实现,如$font-size-10-sm: 3rem !default;会在小屏幕设备上生效。
Colors变量:构建主题调色板
颜色系统采用基础色+功能色的双层结构,在_sass/support/_variables.scss第28-59行定义了12组基础色值,包括:
- 中性色系:
$white、$grey-dk-*(深灰系列)、$grey-lt-*(浅灰系列) - 功能色系:
$purple-*(主题紫)、$blue-*(链接蓝)、$green-*(成功绿)、$yellow-*(警告黄)、$red-*(错误红)
每个色系包含4个梯度值(000-300),数值越大颜色越深。例如紫色系从浅到深依次为$purple-000: #7253ed到$purple-300: #381885。
颜色方案文件通过引用这些基础色定义具体的UI元素颜色,如_sass/color_schemes/light.scss中:
$body-background-color: $white !default;
$body-text-color: $grey-dk-100 !default;
$link-color: $purple-000 !default;
$btn-primary-color: $purple-100 !default;
Spacing变量:布局间距系统
Spacing系统在_sass/support/_variables.scss第61-87行定义,基于$spacing-unit: 1rem(16px)构建了11级间距变量:
$spacers: (
sp-0: 0,
sp-1: $spacing-unit * 0.25, // 4px
sp-2: $spacing-unit * 0.5, // 8px
sp-3: $spacing-unit * 0.75, // 12px
sp-4: $spacing-unit, // 16px
// ... 直到sp-10: 4rem(64px)
) !default;
并通过map-get函数生成便捷访问变量:$sp-1、$sp-2等,用于控制元素内外边距、行高和组件间距。这种标准化间距系统确保了整个文档的布局一致性。
布局变量:控制页面结构
布局相关变量定义在_sass/support/_variables.scss第95-108行,控制页面整体结构:
$nav-width: 16.5rem !default; // 侧边导航宽度
$content-width: 50rem !default; // 主内容区宽度
$header-height: 3.75rem !default; // 顶部导航高度
$gutter-spacing: $sp-6 !default; // 栅格系统间距
响应式布局通过$media-queries变量实现不同屏幕尺寸的适配:
$media-queries: (
xs: 20rem, // 320px
sm: 31.25rem, // 500px
md: $content-width,
lg: $content-width + $nav-width,
xl: 87.5rem // 1400px
) !default;
实战:自定义主题色和字体
通过覆盖变量实现主题定制只需两步:
- 创建自定义SCSS文件:_includes/css/custom.scss.liquid
- 重新定义需要修改的变量:
// 自定义主题色为蓝色系
$purple-000: #2c84fa !default; // 原蓝色$blue-000
$purple-100: #2869e6 !default; // 原蓝色$blue-100
// 增大导航宽度
$nav-width: 18rem !default;
// 修改字体
$body-font-family: "PingFang SC", "Microsoft YaHei", sans-serif !default;
修改前后的导航栏对比效果可通过调整$nav-width变量实现,默认16.5rem与自定义18rem的宽度差异会直接影响内容区域的视觉比例。
颜色方案切换原理
just-the-docs通过$color-scheme变量控制主题切换,在_sass/color_schemes/light.scss中定义浅色主题:
$color-scheme: light !default;
$body-background-color: $white !default;
$body-text-color: $grey-dk-100 !default;
要启用深色主题,只需在_config.yml中设置:
color_scheme: dark
系统会自动加载_sass/color_schemes/dark.scss中的变量定义,实现背景色、文本色等全局样式的切换。
变量覆盖最佳实践
推荐的变量定制流程:
- 查阅官方文档:docs/customization.md
- 复制_sass/support/_variables.scss中需要修改的变量
- 在_includes/css/custom.scss.liquid中重新定义(不带
!default) - 运行本地服务预览效果:
bundle exec jekyll serve
这种方式既能保留主题升级能力,又能实现个性化定制。对于需要频繁调整的变量,建议使用docs/configuration.md中介绍的CSS自定义属性方案。
常见问题与解决方案
Q: 变量修改后未生效?
A: 确保:1) 使用正确的变量名;2) 未在变量后添加!default;3) 自定义文件路径正确:_includes/css/custom.scss.liquid
Q: 如何查看变量的最终计算值?
A: 可通过浏览器开发者工具的Elements面板查看计算后的样式值,或使用@debug指令在编译时输出变量值。
Q: 能否在HTML中直接使用SCSS变量?
A: 不能直接使用,但可通过CSS自定义属性桥接:
:root {
--spacing-unit: #{$spacing-unit};
}
然后在HTML中通过var(--spacing-unit)引用。
通过掌握这些核心SCSS变量,你可以轻松定制just-the-docs主题的每一个视觉细节,创建既专业又符合品牌风格的文档网站。完整的变量列表和使用示例可参考docs/customization.md和项目源码中的SCSS文件。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




