← 返回

MiniBlog v1.0 → v1.3.13 汇总 Changelog

对比 miniblog1.0里程碑.zipminiblog1.3.13-清空失焦与双页footer联系我遮罩.zip
涵盖 2026-07-28 ~ 2026-07-29 全部改动(v1.1 ~ v1.3.13)


一、文件结构变化

操作 文件 说明
删除 .htaccess Apache 安全配置(禁止访问 .md/.json、documents 禁 PHP 执行、sitemap.xml 伪静态),不再依赖
新增 lib/articles.php 文章缓存模块:扫描 documents 生成 cache.json,按 slug 匹配真实路径,首页/文章页/sitemap 三处复用
新增 public/contact.js "联系我"全屏遮罩共享脚本,首页与文章页分别引入
新增 CHANGELOG.md 完整变更日志(v1.1 ~ v1.3.13 逐版记录)
新增 Documents/PUT_YOUR_ARTICLE_HERE.txt 空目录占位提示
未变 lib/Parsedown.php MD5 哈希完全一致,无改动
改动 article.php 3,361 → 8,554 字节(+154%)
改动 index.php 2,411 → 5,751 字节(+139%)
改动 sitemap.php 1,690 → 1,573 字节(-7%,逻辑简化)
改动 public/search.js 457 → 3,314 字节(+626%)
改动 public/style.css 5,189 → 21,853 字节(+321%)
改动 public/highlight.css 224 → 1,953 字节(+771%)

二、架构级变化

2.1 文章缓存系统(v1.3.1 引入)

2.2 文章分类(v1.3.0 引入)

2.3 禁用开发缓存(v1.1.1+ 引入)


三、逐文件详细差异

3.1 article.php

# 改动点 v1.0 v1.3.13
1 缓存模块 require lib/articles.php,按 slug 匹配缓存 map 中的 path/assets
2 资源路径修正 基于 $slugdocuments/{slug}.assets/ 基于缓存 $assets 路径,且空白字符转 %20(修复含空格 slug 图片不渲染)
3 目录生成 DOMDocument + DOMXPath(会吞掉 <video>/<iframe> preg_replace_callback 正则提取 h2/h3(保留原生标签)
4 代码块行号 围栏代码块逐行包裹 <span class="line"><span class="ln">…</span></span>
5 表格滚动容器 每个 <table> 自动包 <div class="table-wrap">
6 viewport width=device-width, initial-scale=1 增加 maximum-scale=1, user-scalable=no, viewport-fit=cover
7 color-scheme <meta name="color-scheme" content="light dark">
8 header 状态 统一 .topbar 文章页始终紧凑 .topbar-article
9 返回链接 内联 style="font-weight:bold;" .back-link class + 智能返回 history.back()(来源是首页时触发 bfcache 恢复滚动)
10 footer 新增 <footer class="site-footer">(与首页一致)
11 联系我遮罩 新增 .contact-overlay 全屏遮罩 HTML(居中 qrcode.png + ✕ 关闭)
12 回到顶部 新增 #toTop 悬浮按钮 + SVG 上箭头(滚动 >400px 显示)
13 F5 滚动恢复 history.scrollRestoration = 'manual'(F5 一律回顶部)
14 目录点击外部收起 document 点击监听,点击目录浮窗外区域自动收起
15 引入脚本 <script src="public/contact.js"></script>
16 CSS 版本号 style.css?v={mtime} 保持(v1.0 已有)

3.2 index.php

# 改动点 v1.0 v1.3.13
1 缓存模块 内联 glob('documents/*.md') require lib/articles.php,读 mbGetArticleCache()
2 文章分类 扫描分类子目录,渲染 .cat-nav 导航(桌面端左栏 / 移动端浮层)
3 布局结构 <main class="index-wrap"> 直接平铺 包入 .layout flex 容器(左栏分类导航 + 右栏内容)
4 文章卡片 urlencode($a['title']) urlencode($a['slug']),卡片加 data-cat 属性
5 搜索框 <input> .search-wrap 包裹 + #searchClear × 清空按钮
6 viewport 同 article.php v1.0 同 article.php v1.3.13
7 color-scheme 同 article.php v1.3.13
8 highlight.css 未引入 首页也加载语法高亮
9 footer 内联样式 sitemap.xml 死链 .site-footer class + sitemap.php 正确链接 + "联系我"链接
10 联系我遮罩 同 article.php
11 浮动搜索按钮 #searchFab + SVG 搜索图标(滚动 >400px 与 #toTop 同步出现)
12 回到顶部 同 article.php
13 沉浸式滚动 topbar 滚动 >40px 添加 .compact class
14 scrollRestoration 同 article.php
15 浮动搜索行为 点击→平滑滚顶→350ms 后聚焦原位搜索框
16 引入脚本 search.js search.js + contact.js + 内联滚动/搜索脚本

3.3 sitemap.php

# 改动点 v1.0 v1.3.13
1 文章来源 glob('documents/*.md') 仅顶层 复用 mbGetArticleCache() 全量文章(含分类)
2 URL 格式 article.php?a={title} article.php?a={slug}(无 cat 参数)

3.4 search.js

# 改动点 v1.0 v1.3.13
1 过滤逻辑 仅标题搜索 input→display:none/'' applyFilter() 统一函数:分类 ∩ 搜索关键字联合过滤
2 分类交互 分类点击→过滤+高亮+syncUrl()写入?cat=+移动端收起浮层
3 URL 同步 syncUrl() 把当前分类写入 URL(不刷新),首屏读 ?cat= 自动套用
4 清空按钮 toggleClear() 按输入内容切换显隐;点击清空+input.blur()失焦
5 分类浮层 开关 + 点击外部收起

3.5 style.css(从 5.2KB 扩展到 21.9KB)

新增模块:

3.6 highlight.css(从 224B 扩展到 1.9KB)


四、按功能维度汇总

4.1 新功能

  1. 文章分类系统(v1.3.0):分类扫描 + 导航 + 前端 filter + URL 同步
  2. 文章缓存系统(v1.3.1):cache.json 签名失效策略,三处复用
  3. 回到顶部悬浮按钮(v1.2.0):69px FAB,大屏对齐文章右缘,滚动 >400px 显示
  4. 浮动搜索按钮(v1.3.3 ~ v1.3.9):滚动后浮现,点击滚顶+聚焦原位搜索框(经历了浮窗→遮罩→回退简化→最终定为滚顶激活原位框)
  5. 搜索框清空按钮(v1.3.11 ~ v1.3.13):× 按钮,有文字时显示,点击清空+失焦
  6. "联系我"全屏遮罩(v1.3.13):双页 footer 统一 + qrcode.png 弹窗 + Esc/点空白关闭
  7. 文章页 footer(v1.3.13):与首页统一 .site-footer

4.2 Bug 修复

  1. DOMDocument 吞标签(v1.1.1):改用正则提取目录,<video>/<iframe> 不再丢失
  2. 暗色模式搜索框闪烁(v1.1.1):color-scheme: light dark
  3. 代码块幽灵空行(v1.1.4):移除 </span></span> 后拼接的 \n
  4. 行号列宽溢出(v1.1.3):width0.5em 改为 1.6em
  5. 移动端表格右侧空白(v1.1.7):改用 .table-wrap 滚动容器包裹
  6. 含空格 slug 资源失效(v1.3.10):空白字符转 %20
  7. F5 恢复滚动位置(v1.3.10):scrollRestoration = 'manual'
  8. 清空按钮垂直错位(v1.3.12):.search-boxdisplay: block
  9. 收录 URL 404(v1.3.1):去掉 ?cat= 参数依赖,旧 URL 也能解析
  10. sitemap 死链(v1.3.1):sitemap.xmlsitemap.php,且收录分类文章

4.3 体验优化

  1. 沉浸式导航栏(v1.1):毛玻璃 + safe-area + 滚动收缩
  2. 页面过渡(v1.1):View Transitions API
  3. Markdown 渲染美化(v1.1 ~ v1.1.7):代码块行号/行距、标题分割线、引用块、表格、图片阴影
  4. 移动端禁缩放(v1.3.2):maximum-scale=1, user-scalable=no
  5. 滚动条防抽动(v1.3.2):scrollbar-gutter: stable
  6. 智能返回(v1.1.1+):来源是首页时 history.back() 触发 bfcache 恢复滚动
  7. 代码块超长行换行(v1.1.2):pre-wrap + overflow-wrap: anywhere

五、版本时间线

版本 日期 核心改动
v1.0 里程碑基线(8 文件,裸 PHP + 基础 CSS)
v1.1 07-28 沉浸式导航栏 + Markdown 渲染美化 + View Transitions
v1.1.1 07-28 移除 DOMDocument + color-scheme + 智能返回 + 目录点击外部收起
v1.1.2 07-28 代码块行号 + 超长行换行
v1.1.3 07-28 代码块行距收紧 + 行号列宽修正
v1.1.4 07-28 修复代码块幽灵空行
v1.1.5 07-28 H1 去分割线 + H2 分割线改文字宽度
v1.1.6 07-28 H2 余量 + 移动端表格填充
v1.1.7 07-28 表格滚动容器方案(彻底修复右侧空白)
v1.2.0 07-28 回到顶部 FAB
v1.2.1 07-28 FAB 放大 150% + 桌面端对齐文章右缘
v1.3.0 07-28 文章分类系统
v1.3.1 07-28 缓存系统 + 去除 cat 参数 + sitemap 修复
v1.3.2 07-29 移动端禁缩放 + 滚动条防抽动
v1.3.3 07-29 浮动搜索按钮 + 顶部搜索浮窗
v1.3.4 07-29 搜索浮窗加遮罩 + 锚定原位框
v1.3.5 07-29 去滚动绑定 + 遮罩仅误点取消
v1.3.6 07-29 遮罩随框内字反转 + 浮窗移到底部
v1.3.7 07-29 浮窗上移 5% + 有字时点击元素同时关浮窗
v1.3.8 07-29 弹出浮窗自动激活输入框(rAF 延迟聚焦)
v1.3.9 07-29 回退:移除搜索浮窗/遮罩,改为滚顶激活原位框
v1.3.10 07-29 修复含空格 slug 资源失效 + 关闭 F5 恢复滚动
v1.3.11 07-29 搜索框清空按钮 ×
v1.3.12 07-29 修正清空按钮 ✕ 垂直错位
v1.3.13 07-29 清空按钮失焦 + 双页 footer + 联系我遮罩

六、统计概览

联系我