Luliy Blog v6 增强功能完整说明书

本文档基于您提供的 enhance.jsenhance.css 以及 Gmeek 配置文件 config.json 编写。旨在帮助开发者、维护者或高级用户完全理解本博客的定制化增强系统,包括配置文件、视觉主题、交互功能及二次开发指南。


📁 一、文件概览

文件 作用
config.json Gmeek 博客核心配置文件,定义站点元数据、导航、插件加载、样式/脚本引用等
enhance.css 完全重写的样式表,支持多主题/皮肤、卡片网格、代码块、灯箱、响应式布局等
enhance.js 所有交互增强逻辑:进度条、音效、浮动工具栏、收藏锁定、卡片生成、樱花、目录监听等

⚙️ 二、config.json 配置说明书

该文件控制博客基础行为、页面结构、外部插件及主题。

2.1 基础元数据

字段 示例值 说明
title "Luliy" 站点主标题,显示在浏览器标签页
subTitle "我将无限进步!" 副标题(部分主题会显示)
avatarUrl https://... 头像图片 URL,会用于顶部紧凑卡片
homeUrl https://luliy6.github.io 站点根地址
faviconUrl 同上 网站图标
email luliy6@qq.com 联系方式
startSite 05/30/2026 站点启用日期,用于“已陪伴计时”
onePageListNum 13 首页每页文章数(分页)
singlePage ["about","friends",...] 单页列表(对应仓库中同名 .html
urlMode "pinyin" 文章链接生成模式(Gmeek 特性)
themeMode "manual" 主题切换模式(手动/自动跟随系统)
dayTheme / nightTheme "light" / "dark_colorblind" 日/夜模式对应 Primer 主题

2.2 图标与外部链接 (iconList / exlink)

2.3 样式与脚本注入 (allHead, script, style 等)

这是定制的核心入口:

"allHead": "<link href='...primer.css' ... /><script src='articletoc.js'></script>...<link rel='stylesheet' href='/enhance.css'><script defer src='/enhance.js'>"

styleindexStyle 提供额外内联样式(如首页卡片 hover、头像阴影),与 enhance.css 互补。

2.4 特色配置项

⚠️ 注意:allHead 末尾已包含对 /enhance.css/enhance.js 的引用,请确保这两个文件在网站根目录可访问。


🎨 三、enhance.css 样式系统说明书

该 CSS 文件完全接管了博客外观,并支持多主题(data-luliy-theme)和多阅读皮肤(data-skin)。

3.1 CSS 变量体系

全局变量(:root

变量 默认值 用途
--skin-bg transparent 阅读皮肤背景色
--skin-text inherit 阅读皮肤文字色
--skin-link #f0b429 链接色
--skin-code-bg rgba(16,16,28,0.96) 代码块背景
--card-c1 ~ --card-c4 紫/蓝/粉/橙 卡片渐变边框色(由 JS 动态设置)

主题变量(data-luliy-theme="xxx"

影响文章内 h1~h5strong 标签的样式。

已有主题:default, classic-blue, eco-green, sunset, mono, cyberpunk, sakura

阅读皮肤(data-skin="xxx"

控制整个页面的背景、文字、引用块等。

已有皮肤:parchment(羊皮纸), ink(水墨), ocean(深海蓝), sakura(樱花粉)。

这些主题/皮肤均通过悬浮工具栏的 ✨风格主题 按钮统一切换(SINKS 数组绑定)。

3.2 主要组件样式

组件 类名 / ID 说明
固定导航栏 #header 磨砂玻璃效果,自动调整内边距
紧凑头像区 #luliy-hero-cluster 显示头像 + 名字 + 实时时钟
折叠标语 #luliy-hero-banner “Remember, this is your world.”,滚动时向上折叠
卡片网格 .luliy-card-grid 响应式网格,每张卡片带渐变边框 + 毛玻璃内芯
置顶区 #luliy-pinned-section 独立展示 pinned 标签文章
macOS 代码块 #postBody pre + .mac-btn 红/黄/绿三按钮(复制/折叠/全屏)
图片灯箱 #luliy-lightbox 点击图片全屏预览
悬浮工具栏 #luliy-toolbar 音效、风格主题、樱花开关
收藏锁屏 #luliy-lock-overlay 密码保护带 favorites 标签的文章
樱花画布 #luliy-sakura-canvas 飘落花瓣,Canvas 实现
文章目录 #TOC, .articletoc 自动注入返回顶部按钮 + 滚动高亮
文章上下篇 .luliy-prevnext 基于 postList.json 自动生成

3.3 响应式断点

3.4 背景图片

body {
  background-image: url('https://raw.githubusercontent.com/.../bg.png') !important;
  background-size: cover !important;
  background-attachment: fixed !important;
}

如需更换,修改该 URL 即可。


🧩 四、enhance.js 功能模块详解

该文件采用 IIFE 封装,定义了 20 个核心模块,并按页面类型(首页/文章页)分别初始化。

4.1 模块列表与说明

编号 名称 功能
01 localStorage 初始化 写入 luliy-sfxluliy-sakuraluliy-sink 等默认值
02 进度条 滚动时更新 #luliy-progress-bar 宽度
03 动态标题 页面隐藏时显示“别走啊”,返回时显示“欢迎回来”
04 运行计时 startSite 时间开始累加,显示在页面底部
05 暗色涟漪 点击主题切换按钮时,从屏幕中心扩散波纹
06 静态背景 (已移除粒子,仅留注释)
07 Web Audio SFX 使用 AudioContext 生成点击音效、主题切换音效、科技感音效
08 点击火花 点击任意位置生成 12 个彩色小圆点向外扩散
09 紧凑头像区 将顶部头像/标题替换为 #luliy-hero-cluster + 实时时钟
10 标签页搜索栏 /tag.html 页面添加按名称筛选标签的输入框
11 图片灯箱 绑定 #postBody img,点击后全屏预览
12 浮动工具栏 三个按钮:音效开关 / 风格主题(SINK)菜单 / 樱花开关
13 收藏锁定 检测页面含有 favorites 标签时,弹出密码框,SHA256 验证通过后解锁
14 首页卡片重构 读取 postList.json,生成渐变边框卡片网格,支持置顶、分页、标签颜色
15 macOS 代码块 为所有 pre 添加红黄绿三按钮,支持复制/折叠/全屏
16 樱花花瓣 Canvas 飘落动画,受 luliy-sakura 开关控制
17 文章目录增强 articletoc.js 生成的目录添加顶部栏(返回顶部)、滚动监听高亮
18 文章页初始化 添加阅读时间、标题复制链接、上下篇导航、赞赏码面板
19 首页/归档页初始化 调用卡片重构、英雄横幅、归档页数据加载
20 主入口 按页面类型执行对应初始化

4.2 重要数据结构

SINKS 数组(统一风格主题)

每个对象包含:

{
  id: 'sakura',
  label: '樱花少女',
  dot: '#f9a8c9',
  skin: 'sakura',        // 对应 data-skin 值
  theme: 'sakura',       // 对应 data-luliy-theme 值
  cardPalette: ['#e05c8a','#f9a8c9','#c94070','#ffb7c5'],
  desc: '粉嫩樱花,少女心思'
}

切换时会同时修改:

文章锁定密码

var LOCK_HASH = sha256('121383');   // 原始密码为 '121383'

如需修改密码,重新计算新密码的 SHA256 并替换该常量。

文章数据获取

fetchPosts() 会尝试请求 /postList.json,返回标准化后的文章数组(包含 title, link, created, labels, pinned)。

卡片生成逻辑

4.3 与第三方插件的协作


🚀 五、部署与自定义指南

5.1 文件放置

将以下文件上传到 GitHub Pages 仓库根目录:

/enhance.js
/enhance.css
/static/img/bg.png          (背景图,确保 URL 与 CSS 中一致)

并确认 config.jsonallHead 中包含对两者的引用(已有)。

5.2 修改默认皮肤/主题

5.3 更换密码

编辑 enhance.js,找到:

var LOCK_HASH = sha256('121383');

'121383' 替换为您的数字密码,然后重新计算 SHA256 并替换该行。注意不要仅修改原始字符串,必须同时修改哈希值

5.4 自定义樱花参数

initSakura() 函数中调整:

5.5 关闭不需要的功能

5.6 兼容性注意事项


🛠️ 六、常见问题 FAQ

Q:为什么我的首页没有显示卡片网格?
A:检查是否在 postList.json 生成后访问,且 SideNav 元素存在。另外确保不在 tag 页面(tag.html),因为标签页会保留原生列表。

Q:如何修改“已陪伴”起始日期?
A:修改 enhance.jsnew Date('2026/05/30 00:00:00') 部分。

Q:SINK 菜单不弹出?
A:检查浏览器控制台是否有 JS 错误。确保悬浮工具栏已注入(#luliy-toolbar 存在)。

Q:文章目录滚动高亮不准?
A:可能是页面其他元素影响了 getBoundingClientRect().top <= 110 的判断阈值,可微调该数值。

Q:我想在文章页显示不同的 SideNav?
A:initCards() 会跳过 tag 页面,文章页不会执行卡片重构,所以原生导航依然保留。

Q:收藏锁页面无法解锁?
A:确认文章中包含文本 favorites 或标签含有 Favorites,且密码正确(默认是 121383)。如果自定义过密码,请确保 SHA256 值一致。


📦 七、依赖清单

名称 用途 加载方式
Primer CSS 基础样式 CDN
Katex 数学公式 CDN + 自动渲染
Mermaid 图表/流程图 CDN + 初始化
Chart.js 图表库 CDN
Prism.js 代码高亮 CDN + 自动加载器
jQuery & jQuery UI 部分插件依赖(可选) CDN
Live2D Widget 看板娘 CDN 自动加载
articletoc.js 生成文章目录 本地插件(由 Gmeek 提供)
GmeekVercount 阅读计数 本地插件

以上均已通过 allHead 引入,无需手动额外安装


✅ 八、结语

本增强系统为 Luliy Blog 带来了现代化、高性能且高度可定制的用户体验。所有代码均以原生 JavaScript + CSS 实现,不依赖大型框架,便于维护和二次开发。如果您需要在此基础上进行更深度的修改,建议先熟悉各模块的职责,然后按功能逐一调整。

各部件作用

文档版本:v1.0
最后更新:2026-06-07
适配 Gmeek 版本:lastde

转载请注明出处