汇总 src/style 下所有 SCSS 文件定义的样式类,按模块分类,供开发者参考
本页汇总 src/style/ 目录下所有 SCSS 文件中定义的 CSS 类,按功能模块分类。所有类均可在任意 Nunjucks 模板或 Markdown 文档中直接使用。
说明
- SCSS 源文件中的
@mixin(混入)仅用于源码复用,不会编译成独立的 CSS 类,因此不列入下表。- 部分类只在特定响应式断点(
≤768px平板、≤480px手机)下生效,已在备注中标明。
一、基础样式(base.scss)
| 类名 | 作用 | 备注 |
|---|---|---|
.hover-show |
Hover 时显示文本(带宽度缩放动画) | 桌面端默认 max-width: 0 + opacity: 0,父级 hover 时展开为 200px;移动端始终显示 |
html/body/a/i为标签选择器,未单独定义类。
二、按钮(buttons.scss)
胶囊按钮(设计图 Button - Content Area),主色实心按钮。
| 类名 | 作用 | 备注 |
|---|---|---|
.btn-pill |
胶囊按钮容器(主色背景 + 阴影 + 圆角) | 用作 <a> 或 <button> |
.btn-pill-icon |
按钮内左侧图标 | 配合 Font Awesome 等图标库 |
.btn-pill-label |
按钮内文字 | 自动不换行 |
典型用法
<a class="btn-pill">
<i class="fa-solid fa-play btn-pill-icon"></i>
<span class="btn-pill-label">Button</span>
</a>
自定义颜色(宏参数)
调用按钮宏 macros/button.njk 时,可通过以下可选参数覆盖默认颜色:
| 参数 | 作用 | 默认 |
|---|---|---|
btnColor |
按钮背景色 | var(--color-primary) |
textColor |
按钮文字色 | var(--color-white) |
btnHover |
hover 时的背景色 | 未传则保持与 btnColor 相同;想换主题 dark 时传 var(--color-primary-dark) |
btnBorder |
边框颜色 | var(--border-color-blue) |
btnBorderHover |
hover 时的边框颜色 | 回落到 btnBorder,再回落则走 var(--border-color-blue) |
任意一个参数省略时,渲染出的 <a> 上不会生成对应内联样式,CSS 走 .btn-pill 默认值。
<a class="btn-pill" href="/about.html" style="--btn-bg:rgba(200, 255, 200);">
<i class="fa-solid fa-arrow-right btn-pill-icon"></i>
<span class="btn-pill-label">了解更多</span>
</a>
<a class="btn-pill" href="#" style="--btn-bg:#fff0f0;--btn-border:#e03131;--btn-border-hover:#e03131;">
<i class="fa-solid fa-pen btn-pill-icon"></i>
<span class="btn-pill-label">编辑</span>
</a>
三、卡片(cards.scss)
统一卡片基线:hover-lift 悬停上浮、$radius-md 圆角、毛玻璃背景 + 浅边框 + 阴影。
3.1 卡片内部通用结构
任何布局的卡片均可复用以下三个内部元素类。
| 类名 | 作用 | 备注 |
|---|---|---|
.card-title |
卡片标题 | 加粗、跟随主题文字色 |
.card-content |
卡片正文/描述 | 次要文字色,自动断词 |
.card-btn |
卡片内按钮 | 主色实心,胶囊圆角 |
3.2 网格卡片(三列布局)
| 类名 | 作用 | 备注 |
|---|---|---|
.cardzone-three-columns |
三列网格容器 | 响应式:平板 2 列、手机 1 列 |
.three-column-card |
三列网格中的"格子卡片" | 居中文字、hover-lift 效果 |
宏参数说明
调用卡片宏 macros/card.njk 中的 card() 时,可通过以下参数自定义卡片:
| 参数 | 作用 | 默认 |
|---|---|---|
title |
标题文字 | 必填 |
content |
正文文字 | 必填 |
url |
按钮跳转地址 | # |
btnText |
按钮文字 | 查看 |
bgColor |
自定义背景色 | 空 → 走默认样式 |
textColor |
自定义文字色 | 空 → 走默认样式 |
borderColor |
自定义边框色 | 空 → 走默认样式 |
hoverBgColor |
自定义 hover 背景色 | 未传则保持原背景色 |
hoverBorderColor |
自定义 hover 边框色 | 未传则回落到 borderColor |
btnColor |
按钮背景色 | 空 → 走默认样式 |
btnTextColor |
按钮文字色 | 空 → 走默认样式 |
btnHover |
按钮 hover 背景色 | 空 → 走默认样式 |
btnBorder |
按钮边框色 | 空 → 走默认样式 |
btnBorderHover |
按钮 hover 边框色 | 未传则回落到 btnBorder |
任意一个颜色参数省略时,渲染出的元素上不会生成对应 CSS 变量,SCSS 走默认 fallback 值。
CSS 变量
底层通过 CSS 变量实现颜色自定义,高级用户可直接在 HTML 中使用:
| 变量名 | 作用 | Fallback 链 |
|---|---|---|
--card-bg |
卡片背景色 | transparent |
--card-fg |
卡片文字色 | $color-text |
--card-border |
卡片边框色 | $card-border-color |
--card-bg-hover |
hover 背景色 | var(--card-bg, transparent) |
--card-border-hover |
hover 边框色 | var(--card-border, $card-border-color) |
--btn-bg |
按钮背景色 | $color-primary |
--btn-fg |
按钮文字色 | $color-white |
--btn-hover |
按钮 hover 背景色 | var(--btn-bg, $color-primary-dark) |
--btn-border |
按钮边框色 | $border-color-blue |
--btn-border-hover |
按钮 hover 边框色 | var(--btn-border, $border-color-blue) |
使用示例
<div class="three-column-card" >
<div class="card-title">文档中心</div>
<div class="card-content">查阅完整的 API 文档和使用指南</div>
<a class="card-btn" href="/docs.html" >查看</a>
</div>
<div class="three-column-card" style="--card-bg:#f0fdf4;--card-border:#22c55e;--card-border-hover:#16a34a;">
<div class="card-title">自定义卡片</div>
<div class="card-content">淡绿色背景 + 深绿色边框</div>
<a class="card-btn" href="#" >查看</a>
</div>
<div class="three-column-card" >
<div class="card-title">按钮定制</div>
<div class="card-content">橙色按钮 + 红色边框</div>
<a class="card-btn" href="#" style="--btn-bg:#f97316;--btn-hover:#ea580c;--btn-border:#ef4444;--btn-border-hover:#ef4444;">查看</a>
</div>
3.3 独立信息卡片(左侧 icon + 右侧 标题/正文)
| 类名 | 作用 | 备注 |
|---|---|---|
.card-standalone |
独立卡片容器 | 最大宽 440px,hover-lift |
.card-info |
左侧图标区域 | flex 居中 |
.card-info-icon |
图标本体 | 27×27px |
.card-body |
右侧标题 + 正文 + 按钮纵向堆叠 | flex column |
3.4 通栏卡片
| 类名 | 作用 | 备注 |
|---|---|---|
.card-full |
通栏独立卡片 | 撑满父容器,hover-lift |
.card-full-list |
通栏卡片纵向堆叠容器 | 间距统一为 $spacing-lg |
宏参数说明
调用卡片宏 macros/card.njk 中的 cardFull() 时,可通过以下参数自定义卡片(参数列表与 card() 完全一致):
| 参数 | 作用 | 默认 |
|---|---|---|
title |
标题文字 | 必填 |
content |
正文文字 | 必填 |
url |
按钮跳转地址 | # |
btnText |
按钮文字 | 查看 |
bgColor |
自定义背景色 | 空 → 走默认样式 |
textColor |
自定义文字色 | 空 → 走默认样式 |
borderColor |
自定义边框色 | 空 → 走默认样式 |
hoverBgColor |
自定义 hover 背景色 | 未传则保持原背景色 |
hoverBorderColor |
自定义 hover 边框色 | 未传则回落到 borderColor |
btnColor |
按钮背景色 | 空 → 走默认样式 |
btnTextColor |
按钮文字色 | 空 → 走默认样式 |
btnHover |
按钮 hover 背景色 | 空 → 走默认样式 |
btnBorder |
按钮边框色 | 空 → 走默认样式 |
btnBorderHover |
按钮 hover 边框色 | 未传则回落到 btnBorder |
任意一个颜色参数省略时,渲染出的元素上不会生成对应 CSS 变量,SCSS 走默认 fallback 值。
CSS 变量
通栏卡片与网格卡片共用同一套 CSS 变量体系,详见 3.2 节"CSS 变量"表格。
使用示例
<div class="card-full" >
<div class="card-title">新版本发布</div>
<div class="card-content">v2.0 带来了全新的设计语言和性能优化,立即了解更新内容。</div>
<a class="card-btn" href="/changelog.html" >查看更新日志</a>
</div>
<div class="card-full" style="--card-bg:#fffbeb;--card-border:#f59e0b;--card-border-hover:#f59e0b;">
<div class="card-title">限时活动</div>
<div class="card-content">夏日特惠活动进行中,所有商品 8 折起,点击下方按钮立即参与!</div>
<a class="card-btn" href="/event/summer.html" style="--btn-bg:#f59e0b;--btn-hover:#d97706;">查看</a>
</div>
四、代码块(code.scss)
配合 @11ty/eleventy-plugin-syntaxhighlight + Prism 主题使用。
代码块容器(
pre[class*="language-"]、pre.line-numbers)与行内代码(:not(pre) > code)均为标签/属性选择器,未单独定义类。行号、复制按钮等子元素通过嵌套选择器控制样式(
.line-numbers-rows、.copy-to-clipboard-button),由 Prism 插件自动注入。
五、主内容区(content.scss)
| 选择器 | 作用 | 备注 |
|---|---|---|
article |
主内容卡片容器 | 最大 1280px,最小 768px;平板及以下解除最小宽度 |
article > ul |
文章内无序列表 | 默认 text-align: justify |
article > div.card-standalone |
文章内的独立卡片 | 上下外边距 25px |
article blockquote |
引用块 | 左侧主色 4px 边 + 主色淡背景 |
article table |
文章内表格 | 横向溢出滚动,表头淡背景 |
article img |
文章内图片 | 自适应最大宽度 |
article hr |
文章内分隔线 | 2px 浅色横线 |
六、页脚(footer.scss)
| 选择器 | 作用 | 备注 |
|---|---|---|
footer |
页脚容器 | 居中文字、主背景色 |
footer p |
页脚段落 | 移动端切换为块级居中显示 |
七、导航栏(header.scss)
固定顶部导航栏(高 64px + 15px 装饰条),桌面端显示按钮组、移动端切换为抽屉。
| 类名 | 作用 | 备注 |
|---|---|---|
header |
顶层 <header> 容器 |
固定顶部,主题色背景(支持自定义,见 7.2) |
.nav-title |
导航栏左侧站点标题 | 加粗 |
.nav-btns |
导航按钮组容器 | 移动端变为纵向堆叠 |
.nav-hamburger |
移动端汉堡菜单图标 | 桌面端 display: none |
.nav-drawer-close |
移动端抽屉关闭按钮 | 仅移动端显示(桌面端 display: none) |
状态类(由 JS 切换 <body> 上的类)
| 类名 | 作用 | 备注 |
|---|---|---|
.nav-drawer-open |
打开移动端导航抽屉 | 抽屉滑入 + 显示遮罩 |
7.2 自定义背景色
通过 --header-bg CSS 变量自定义 <header> 背景色,未设置时使用主题色 (--color-primary),跟随深浅色主题切换。
支持两种方式(推荐优先用 front matter,仅在 layout 层覆盖时用模板 set):
方式 1:markdown front matter
---
title: 关于
headerBg: "#c92a2a"
---
方式 2:njk 模板(layout 中)
<headerstyle="--header-bg:#2b8a3e;"></header><input type="checkbox" id="nav-toggle" hidden>
<div class="nav-title"><a href="/"><i class="fa-solid fa-school" aria-hidden="true"></i></a></div>
<label for="nav-toggle" class="nav-hamburger"><i class="fa-solid fa-bars" aria-hidden="true"></i></label>
<nav>
<button type="button" class="nav-drawer-close" aria-label="关闭导航菜单"><i class="fa-solid fa-xmark" aria-hidden="true"></i></button>
<div class="nav-btns">
<a href="/"><i class="fa-solid fa-house" aria-hidden="true"></i><span class="hover-show">首页</span></a>
<a href="/article.html"><i class="fa-solid fa-book" aria-hidden="true"></i><span class="hover-show">文章</span></a>
<a href="/wiki.html"><i class="fa-solid fa-book-open" aria-hidden="true"></i><span class="hover-show">Wiki</span></a>
<a href="/zone.html"><i class="fa-solid fa-arrow-pointer" aria-hidden="true"></i><span class="hover-show">分区</span></a>
<a href="https://github.com/hjx-25pc1/hjx-25pc1.github.io" target="_blank"><i class="fa-brands fa-github" aria-hidden="true"></i><span class="hover-show">此 Github 项目</span></a>
<a href="/astro" target="_blank"><i class="fa-solid fa-rocket" aria-hidden="true"></i><span class="hover-show">Astro Playground</span></a>
<a href="#" class="nav-popup-btn" aria-haspopup="true" aria-expanded="false" aria-controls="nav-popup" aria-label="站点导航" role="button"><i class="fa-solid fa-sitemap" aria-hidden="true"></i><span class="hover-show">导航</span></a>
<div class="theme-switcher">
<button type="button" class="theme-btn" aria-label="切换主题" aria-haspopup="true" aria-expanded="false">
<i class="fa-solid fa-circle-half-stroke" aria-hidden="true"></i><span class="hover-show">切换主题</span>
</button>
<ul class="theme-menu" role="menu">
<li role="none">
<button type="button" role="menuitem" data-theme-value="auto">
<i class="fa-solid fa-circle-half-stroke" aria-hidden="true"></i> 跟随系统
</button>
</li>
<li role="none">
<button type="button" role="menuitem" data-theme-value="light">
<i class="fa-solid fa-sun" aria-hidden="true"></i> 浅色
</button>
</li>
<li role="none">
<button type="button" role="menuitem" data-theme-value="dark">
<i class="fa-solid fa-moon" aria-hidden="true"></i> 深色
</button>
</li>
</ul>
</div>
</div>
</nav>
<div class="nav-popup" id="nav-popup" role="dialog" aria-modal="true" aria-label="站点导航菜单">
<button type="button" class="nav-popup-close" aria-label="关闭导航菜单"><i class="fa-solid fa-xmark" aria-hidden="true"></i></button>
<nav class="eleventy-nav">
<ul>
<li>
<a href="/">🏠 首页</a>
</li>
<li>
<a href="/article.html">📰 文章</a>
<ul>
<li>
<a href="/markdown-showcase.html">📝 Markdown & 组件展示示例</a>
</li>
</ul>
</li>
<li>
<a href="/wiki.html">📚 Wiki</a>
</li>
<li>
<a href="/zone.html">📌 分区</a>
<ul>
<li>
<a href="/event.html">🔔 事件</a>
</li>
<li>
<a href="/study.html">📒 学习</a>
</li>
<li>
<a href="/discussion.html">💬 讨论</a>
</li>
</ul>
</li>
<li>
<a href="/about.html">ℹ️ 关于</a>
</li>
</ul>
</nav>
</div>
<div class="overlay"></div>
</header>
颜色会作为
style="--header-bg:...";内联到<header>元素上,并通过transition: background平滑过渡。
八、导航弹出菜单(nav-popup.scss)
桌面端点击按钮下拉的面板,移动端切换为底部弹层(高 90vh)。
| 类名 | 作用 | 备注 |
|---|---|---|
.nav-popup-btn |
触发弹窗的按钮(覆盖 cursor) | 复用 .nav-btns a 样式 |
.nav-popup |
弹出面板容器 | 桌面 300px 宽、右上角对齐 |
.nav-popup-close |
移动端关闭按钮 | 仅移动端显示 |
.nav-active |
标记当前激活项 | 文字加粗 + 主色淡背景 |
状态类(由 JS 切换 <body> 上的类)
| 类名 | 作用 | 备注 |
|---|---|---|
.nav-popup-open |
打开导航弹窗 | 弹窗淡入 + 下划线常驻 |
九、统一遮罩(overlay.scss)
全站唯一的 <div class="overlay">,由 header.njk 引入;同一时刻只能服务一个激活场景。
| 类名 | 作用 | 备注 |
|---|---|---|
.overlay |
遮罩元素本体 | 固定全屏、半透明黑 + 模糊 |
触发遮罩的状态类(切换 <body> 上的类)
| 类名 | 作用 | 备注 |
|---|---|---|
.nav-drawer-open |
移动端导航抽屉 | 通用场景 |
.nav-popup-open |
桌面端站点导航弹窗 | 通用场景 |
.theme-menu-open |
桌面端主题切换菜单 | 仅桌面端 |
.wiki-sidebar-open |
移动端 Wiki 侧边栏 | 仅移动端(≤768px) |
十、主题切换(theme-switcher.scss)
桌面端下拉菜单 / 移动端内联展开。
| 类名 | 作用 | 备注 |
|---|---|---|
.theme-switcher |
主题切换器容器 | 相对定位 |
.theme-btn |
切换按钮(图标) | 36×36px、透明背景 |
.theme-menu |
主题选项下拉菜单 | 桌面端绝对定位、移动端改为静态内联 |
状态类
| 类名 | 作用 | 备注 |
|---|---|---|
.theme-menu.open |
展开主题菜单 | 由 JS 切换 |
.theme-menu-open |
触发遮罩 | 详见第九节 |
十一、图片画廊(images.scss)
| 类名 | 作用 | 备注 |
|---|---|---|
.image-gallery |
图片画廊容器 | 水平排列 + 居中,移动端竖向 |
.image-gallery > picture |
画廊中的单个 picture 元素 | hover 上浮 + 阴影加深 |
十二、Wiki(wiki.scss)
12.1 整体布局
| 类名 | 作用 | 备注 |
|---|---|---|
.wiki-layout |
Wiki 页面整体布局(侧边栏 + 内容) | 移动端切换为纵向 |
12.2 侧边栏
| 类名 | 作用 | 备注 |
|---|---|---|
.wiki-sidebar-toggle |
侧边栏折叠/展开按钮 | 桌面固定左上、移动端固定左下 |
.wiki-sidebar-toggle-icon |
按钮内的汉堡/X 图标(三横线) | aria-expanded='false' 时变为 X |
.wiki-sidebar |
侧边栏本体 | 桌面 220px 宽、sticky 定位;移动端改为 fixed 抽屉 |
.wiki-sidebar-title |
侧边栏顶部标题 | 主色文字 |
.wiki-nav |
导航列表容器 | |
.wiki-nav-group |
分组容器 | 当前页对应分组高亮 |
.wiki-nav-group-title |
分组小标题 | 大写、字间距 |
.wiki-nav-group-list |
分组列表 |
状态类(由 JS 切换 <body> 上的类)
| 类名 | 作用 | 备注 |
|---|---|---|
.wiki-sidebar-collapsed |
折叠侧边栏 | 桌面端隐藏 + 按钮左移 |
.wiki-sidebar-open |
触发遮罩 | 仅移动端,详见第九节 |
12.3 主内容区
| 类名 | 作用 | 备注 |
|---|---|---|
.wiki-content |
内容区容器 | flex 1 |
.wiki-article |
文章卡片 | 主色 H1 标题 |
.wiki-description |
文章描述段落 | 斜体、次要文字色 |
.wiki-edit-link |
"编辑此页"链接区块 | 右对齐、胶囊按钮样式 |
12.4 索引列表
| 类名 | 作用 | 备注 |
|---|---|---|
.wiki-list |
索引页条目列表 | 左侧 3px 主色边 |
.wiki-list-desc |
条目描述 | 次要文字色 |
附:状态类总览(JS 在 <body> 上切换)
| 状态类 | 触发组件 | 副作用 |
|---|---|---|
.nav-drawer-open |
移动端导航抽屉 | 抽屉滑入 + 遮罩显示 |
.nav-popup-open |
桌面端导航弹窗 | 弹窗淡入 + 遮罩显示 |
.theme-menu-open |
桌面端主题菜单 | 菜单展开 + 遮罩显示 |
.wiki-sidebar-open |
移动端 Wiki 侧边栏 | 抽屉滑入 + 遮罩显示 |
.wiki-sidebar-collapsed |
桌面端 Wiki 侧边栏 | 侧边栏隐藏 + 按钮左移(注意:此为布局容器上的类,非 <body>) |
.nav-popup-open .nav-popup-btn::after |
导航按钮打开态 | 下划线常驻 |
.nav-active |
当前激活的导航项 | 文字加粗 + 主色淡背景 |