Quartz 暗色模式(Darkmode)完全指南:跟随系统主题、本地持久化与自定义切换
Quartz 暗色模式Darkmode完全指南跟随系统主题、本地持久化与自定义切换【免费下载链接】quartz a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites项目地址: https://gitcode.com/GitHub_Trending/qua/quartzQuartz 内置了开箱即用的暗色模式支持能够自动尊重访问者的系统主题偏好prefers-color-scheme并将用户手动的明暗切换结果保存在浏览器 localStorage 中实现跨页面加载的持久化记忆。读完本文你将掌握如何在 Quartz 中启用/禁用暗色模式、通过quartz.config.yaml定制明暗两套配色、安装社区 darkmode 插件以及如何监听themechange事件在主题切换时执行自己的业务逻辑。暗色模式的工作机制按照 docs/features/darkmode.md 的说明Quartz 的暗色模式具备两大开箱能力尊重系统主题偏好首次访问时站点会根据操作系统或浏览器的prefers-color-scheme自动选择亮色或暗色主题无需用户任何操作。本地持久化一旦用户手动点击了暗色模式开关该选择会被写入浏览器的 localStorage在后续的所有页面加载中保持生效直到用户再次手动切换或清除站点数据。这种系统偏好为默认、手动选择优先的设计兼顾了无感体验与用户控制权是典型的现代网站主题切换实现方式。从仓库实现看这一功能由社区插件quartz-community/darkmode提供Quartz 5 采用插件化架构暗色模式开关本质上是挂在页面工具栏上的一个组件Component对应文档 docs/plugins/Darkmode.md 中的 API 定义Category 为Component函数名为ExternalPlugin.Darkmode()enabled选项默认值为true。默认配置暗色开关在工具栏中的位置在 Quartz 5 中暗色模式组件默认已启用。以仓库根目录的 quartz.config.default.yaml以及 CLI 模板 quartz/cli/templates/default.yaml为例插件列表中相关配置如下- source: quartz-community/darkmode enabled: true layout: position: left priority: 30 group: toolbar各字段含义source插件来源标识此处为官方社区插件quartz-community/darkmode。enabled是否启用暗色模式开关true为启用默认值false为禁用。layout.position组件在页面布局中的位置此处为left左侧工具栏与阅读模式reader-modepriority: 35相邻排列。layout.priority同位置下组件的排序优先级数值越小越靠前30意味着它位于 page-titlepriority: 10之后、reader-modepriority: 35之前。layout.group组件所属分组toolbar表示它渲染在页面工具栏区域。移除或禁用暗色模式如果你不需要暗色模式开关有两种等价做法删除条目直接从quartz.config.yaml的plugins列表中移除quartz-community/darkmode这一整条配置显式禁用保留条目但将enabled设为false- source: quartz-community/darkmode enabled: false两种方式的效果相同工具栏上不再出现明暗切换按钮。注意禁用开关并不会影响主题本身站点的明暗配色依然由configuration.theme.colors中的lightMode/darkMode两套色板控制见下文。安装 darkmode 插件如果你的站点是精简安装、配置中没有该插件可以通过 Quartz CLI 的一键命令安装npx quartz plugin add github:quartz-community/darkmode该命令会将插件注册到quartz.config.yaml的插件列表中。安装与配置插件的通用方法可参考 docs/configuration.md 中关于 Plugins 部分的说明。默认的插件选项极其简单只需enabled: true- source: github:quartz-community/darkmode enabled: true自定义明暗两套主题配色暗色模式不只是开关这么简单Quartz 允许你分别定义亮色与暗色两套完整的色板。在 quartz.config.default.yaml 的configuration.theme.colors中可以看到默认的完整配色示例theme: fontOrigin: googleFonts cdnCaching: true typography: header: Schibsted Grotesk body: Source Sans Pro code: IBM Plex Mono colors: lightMode: light: #faf8f8 lightgray: #e5e5e5 gray: #b8b8b8 darkgray: #4e4e4e dark: #2b2b2b secondary: #284b63 tertiary: #84a59d highlight: rgba(143, 159, 169, 0.15) textHighlight: #fff23688 darkMode: light: #161618 lightgray: #393639 gray: #646464 darkgray: #d4d4d4 dark: #ebebec secondary: #7b97aa tertiary: #84a59d highlight: rgba(143, 159, 169, 0.15) textHighlight: #b3aa0288两套色板的语义一致各颜色变量的作用如下light页面主背景色lightgray较浅的辅助背景如代码块、引用块背景gray边框与分隔线等中间色调darkgray次要文字颜色dark正文主文字颜色secondary强调色链接、标题装饰等tertiary三级强调色highlight选中/悬停高亮背景支持rgba透明色textHighlight文本高亮标记色。可以看到暗色模式下的light/dark恰好与亮色模式互换语义暗色模式背景深、文字浅通过分别维护两套色板Quartz 可以保证任意页面元素在两种主题下都有恰当的对比度。修改theme.colors下的任意颜色值后重新构建站点即可生效。监听 themechange 事件并注入自定义逻辑除了内置的切换行为Quartz 还向document派发了名为themechange的自定义事件。任何页面脚本都可以监听该事件在用户切换明暗主题的瞬间执行自己的逻辑例如上报埋点、动态调整第三方组件的配色等。原文档 docs/features/darkmode.md 给出的用法如下document.addEventListener(themechange, (e) { console.log(Theme changed to e.detail.theme) // either light or dark // your logic here })事件对象的detail.theme字段取值为字符串light或dark代表切换后的目标主题。典型的应用场景包括当主题切换为dark时自动给第三方嵌入组件如图表、地图追加暗色样式类根据主题上报用户偏好统计同步更新站点内其他独立 UI 元素的配色。小结Quartz 的暗色模式在默认配置下即可工作首次访问跟随系统偏好手动切换后写入 localStorage 持久生效。通过 quartz.config.default.yaml 中的theme.colors.lightMode/darkMode可以分别定制两套配色在plugins列表删除或禁用quartz-community/darkmode条目即可移除开关使用npx quartz plugin add github:quartz-community/darkmode可随时重新安装。最后别忘了利用themechange事件让站点在主题变化时执行你自定义的逻辑这是将暗色模式与业务深度整合的推荐做法。【免费下载链接】quartz a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites项目地址: https://gitcode.com/GitHub_Trending/qua/quartz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

用Power Apps实现SharePoint Online列表下拉菜单级联选择

用Power Apps实现SharePoint Online列表下拉菜单级联选择

每当我在SharePoint Online里看到“两个下拉菜单必须联动”的需求,第一反应基本都是Power Apps。上个月帮一个项目组整理设备登记列表时,对方提了个很常见的规则:选完“所属大区”,“城市”下拉里就不能再出现其他大区的城市&…

2026/11/12 4:02:18 阅读更多 →
SOLIDWORKS阵列智能变更:从全局变量到配置驱动的参数化建模

SOLIDWORKS阵列智能变更:从全局变量到配置驱动的参数化建模

每次做方案评审,最怕听到的一句话是“这里阵列少一排,那里孔径改小点,整体调整一下”。改的时候看着就是一个特征的事儿,动完以后满屏报错、阵列散架、相关零件全部亮红灯。尤其是阵列这种长在特征树中间、前后还挂着好几层父子关…

2026/11/11 11:14:33 阅读更多 →
中文字体子集化:精准裁剪而非压缩的工程实践

中文字体子集化:精准裁剪而非压缩的工程实践

1. 为什么中文字体子集化不是“压缩”而是“外科手术式裁剪”很多人第一次听说“中文字体子集化”,下意识就联想到 ZIP 压缩、图片 WebP 转换——这是最典型的认知偏差。我去年给一个面向海外用户的中文内容平台做性能优化时,也犯过这个错:直…

2026/11/9 15:59:21 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻