数风流人物,还看今朝

历史口袋宝典 正式版 V1.17

朝代
身份
时间范围

岁月长歌 No.1

提示:滚轮缩放时间轴 · Shift+滚轮上下浏览 · 按住任意处拖动可双向平移(横向平移时间 · 纵向滚动人物列表)· 点姓名看关系图、点该行其它处定位到下方总表 · 悬停查看详情 · 淡色带标注各朝代时代

本表以图形方式呈现 1151 位人物的生卒区间与所属朝代:纵轴为人物、横轴为年代,横条为该人物的生卒跨度。它是下方【风流人物】表的可视化结果 —— 需要逐条查阅、排序、检索或复制文本时,请使用【风流人物】表。

风流人物 No.2

姓名 身份 朝代 类别 生年 卒年 享寿 简介

往事勾陈 No.3

重大事件 朝代 发生时间▲ 牵涉人物 文明影响

知己天涯 No.4

组合名称 所处时期▲ 主要成员 简介

吉光片羽 No.5

典故短语 朝代▲ 类别 牵涉人物 释义

翰墨书香 No.6

书名 成书时代▲ 作者 类别 著作简介

瑰宝传世 No.7

文物名称 所处年代▲ 文物简介 文物意义

雕梁画栋 No.8

名称 建造年代▲ 涉及人物 建筑说明 简介

天工机巧 No.9

名称 发明年代▲ 涉及人物 物品说明 简介

经纶世务 No.10

制度名称 对应朝代▲ 经典人物 制度简介

梨园雅韵 No.11

名称 年代▲ 作者 类型 简介

诗词歌赋 No.12

名称 创作年代▲ 作者 经典片段 简介

雄文壮词 No.13

篇名 时代▲ 作者 体裁 名句 简介

山水墨色 No.14

名称 创作年代▲ 作者 类别 简介

兵戈缭乱 No.15

战役名 朝代 具体时间▲ 交战双方 战争影响

奇案异闻 No.16

案件名 朝代▲ 时间 相关人物 案情概要 结局与影响

志异妙传 No.17

故事名 朝代▲ 主要人物 故事梗概 虚实考辨

禅茶一味 No.18

茶名 出现时代▲ 茶类 味型 主要产地 简介

薪火相传 No.19

项目名 起源时代▲ 发明者/代表人物 类别 简介

贝叶遗珍 No.20

典籍名 成书年代▲ 牵涉人物 宗教 典籍简介

珍馐美馔 No.21

美食名 产生时代▲ 代表人物 类别 地方 美食简介

丝竹管弦 No.22

乐器名 出现时代▲ 代表人物 乐器介绍

大音希声 No.23

乐曲名 出现时代▲ 代表人物 音乐介绍

碎金削玉 No.24

兵器名 出现时代▲ 代表人物 类型 兵器介绍

固本培元 No.25

功法名 出现时代▲ 代表人物 功法介绍

名山大川 No.26

名称 出现时代▲ 代表人物 风光与绝景

凤冠朱颜 No.27

名称 对应时代▲ 经典人物 简介

灵根仙草 No.28

药材名称 发现时代▲ 主要产地 主要功效 简介

千金良方 No.29

方剂名 年代▲ 人物 出处 主要成分 功效主治

物埠民丰 No.30

作物名称 类别 时代▲ 原产/传入 相关人物 简介

市井百物 No.31

器物名称 类别 时代▲ 主要工艺 简介

安居乐业 No.32

名称 类别 时代▲ 相关人物 玩法 简介

锦绣神州 No.33

已含省级界线与主要地名(红点=历史古都)· 点击任一省份弹出该省代表人物二级窗口(34 个省级区域/共 139 位)· 点击上方朝代按钮切换各朝代手绘实控轮廓 · 滚轮缩放 · 拖拽平移 · +/-/复位 可缩放

版本说明

当前版本 V1.17(2026-09-23)——在 V1.0 基线(2026-09-18)之上:V1.01 新增【奇案异闻】【志异妙传】两表并统一二级窗口;V1.02 让名片关联块可点击、修正全表文字溢出、放大关系图;V1.03 核查并修复全部百度百科链接,补齐键盘与读屏可用性;V1.04 面向全部关联表做了一轮系统性增补与勘误;V1.05 锁定二级窗口滚动、按黄金分割比定窗口尺寸、百科链接直达精确词条;V1.06 新增全站检索,并把表2 改为分块渲染、表1 改为虚拟窗口,两条渲染路径合一;V1.07 新增【物埠民丰】(作物 54 种)与【市井百物】(器物 56 类)两张内容表;V1.08 补上一条克制的动效层(开卷序列、卡片错峰入场、行与表头反馈、滚动柔化边缘、面板入场),并把全站过渡参数收敛为令牌;V1.09 完成动效第二批(关系图生长、时间轴生命条生长、地图水墨渗开、导航落定态、首屏规模数字),并消除了滚动路径上的强制同步布局;V1.10 修正关系图的错误连线(「传承」改为只认显式帝系,自动补边统一降级为「同代」)、统一 30 张表卡的尺寸,并为每张表加上折叠按钮;V1.11 把表1 的滚动改成行复用(每帧 DOM 操作降约 98%)、撤掉表1 上的行级动效,并把三元数据源收敛为单一来源;V1.12 把时间轴的行改成绝对定位(滚动一帧零 DOM 增删)、把九张表的类别分类由 137 类收敛到 63 类,并新增右侧上下切换表的圆钮;V1.13 新增【雄文壮词】(千古名文 80 篇)并把它排在【诗词歌赋】之后,人物库补录 10 位名家;V1.14 新增【安居乐业】(古代游艺竞技 57 项),并把散在别表的游艺条目迁入其中;V1.15 把表1 的拖拽改成「几何冻结 + 单变量位移」——每帧布局属性写入 38.6 → 0,至此表1 的滚动与拖拽两条热路径都不再逐元素改布局属性;V1.16 按真机反馈补两处:拖拽期提升合成层(transform 变化只走合成、不再整行重绘)并收敛拖拽期的取值域(消除极端负偏移与拖拽溢出);V1.17 把表1 推倒重写为 Canvas 渲染 —— 滚动容器内不再有任何行 / 色块 / 刻度 DOM,滚动与拖拽的 DOM 变更数双双归零,一帧只剩约 190 次绘制调用,拖拽溢出于结构上不再可能。

V1.17 更新要点(2026-09-23)
  • 表1 岁月长歌推倒重写为 Canvas 渲染。此前六轮优化(虚拟窗口 → 行池复用 → 绝对定位 → 拖拽几何冻结 → 合成层提升)都在「用 DOM 假装一张甘特图」这个前提下做局部改进:每轮都把「每帧属性写入数」压低一档(678 → 10 → 0),可真机上始终卡、拖拽还会溢出。根因是前提本身 —— DOM 方案下任何视觉变化都必走「样式重算 → 布局 → 绘制 → 合成」四段流水线,而本表的可视信息统共只有三种绘制原语:一行文字、一条圆角矩形、一根刻度线;1141 行 × 8 元素 = 9128 个节点,为了绕开这个数字又被逼引入整套虚拟窗口机制,复杂到改一处要想五处。V1.17 把渲染与交互整体搬到一张 <canvas> 上:滚动容器内不再有任何行 / 色块 / 刻度 DOM,滚动与拖拽的 DOM 变更数双双归零,一帧只剩约 190 次绘制调用(成本随视口而非总行数增长),「拖拽溢出」在结构上不可能再发生。
  • 代价与取舍:表1 内容不再能被屏幕阅读器朗读、不能选中复制、Ctrl+F 搜不到 —— 这是可接受的,因为本表在语义上是图,它的表是表2【风流人物】(1151 位全收录、可排序可检索可选中),canvas 带 role="img" 与 aria-describedby 显式指明这一点。打印改为导出当前视图的位图(原先打印 1141 行 DOM 要出几十页,且每行缩到 A4 上仅约 0.2mm 高,同样看不清)。
  • 顺带收掉的旧账:图例与提示改为常驻滚动容器底部(.tl-foot,sticky)—— 原先它们排在五万像素的滚动内容末尾,得一路滚到底才看得见;新增 Shift+滚轮 纵向浏览、+ / - 键盘缩放与 Home / End 跳转;window.scrollTo 的 jsdom 噪声(每调一次吐一行 Not implemented)改为无条件覆盖。
  • 代码量:app.js 净减 51 行、styles.css 净减 77 行 —— 删掉的是六轮优化堆起来的整套机制(虚拟窗口、槽位与行池、刻度池、朝代带节点、预铺与重锚、值域收敛、合成层提升),换来的是「画的时候顺手算」。五项门槛 ERROR 0 / WARN 0,运行验证重写为 180 项(表1 一组从 DOM 语义整体换成 canvas 语义,并注入记账式假 2D 上下文用于验证「到底画了什么」)。
V1.16 更新要点(2026-09-23)
  • 拖拽期提升合成层:V1.15 用 CSS 变量 + transform 替代逐元素改 left,消掉了布局失效;但 jsdom 探针量不到绘制成本 —— 不在独立合成层上的元素,transform 每帧变化仍会重绘整行。现按下时给 #scroll 加 .tl-panning,令 27 个色块层、刻度、朝代带全部 will-change: transform(一次性建层),拖拽全程只走合成;松手后下一帧释放。
  • 收敛拖拽期的取值域:原先拖拽期不裁剪,会产出 left: -4567% 这类巨大负偏移 —— 值虽合法,却把渲染器逼进未知行为域(真机上表现为拖拽溢出),也让裁剪计算更重。现把可见色块的 left 收敛在视窗左右各一屏半内(重锚阈值是一屏,余量足够),之外的一律隐藏。顺带让按下那一帧更轻:原本被隐藏的色块不再需要逐个反转 display。
  • 兜底裁剪:.timeline-body 也加 overflow: hidden,横向一切视觉溢出在此拦下(此前已有 .bars / .era-overlay / .axis 三处各自裁剪)。
  • 门禁:五项自检全 ERROR 0 / WARN 0,tools/smoke.js 断言 177 → 181 项(新增合成层提升、取值域收敛、兜底裁剪与松手释放四条)。
V1.15 更新要点(2026-09-23)
  • 表1 的拖拽不再逐元素改布局属性:拖拽有一个极好的性质 —— span 不变,只有 viewStart 在动。于是刻度、朝代带、生命条的位置全都只是「整体平移同一个像素量」。既然如此,就没必要每帧重写几十个 left(布局属性,写一次就让一处布局失效并重绘),改为把位移量写进一个 CSS 变量,由 transform 统一吃掉。
  • 实测(jsdom 探针,逐帧驱动、且先把视图与窗口对齐):每帧布局属性写入 38.6 → 0.0(纯横向拖拽,其中生命条原本独占 31.0 次)· 横纵手抖 38.6 → 0.1 · 纵向为主 38.1 → 0.1 · 快速甩动 38.2 → 0.2;同期布局读取 2.00 → 0.00 次/帧(纯横向)。拖拽一帧只写 1 个 CSS 变量,且走合成 —— 不触发布局,也不触发重绘。
  • 关键不变量:拖拽期间 left / width / display 一个字节都不改(已写成断言)。松手时再按最终视图把 left/width 落定一次(settlePan),落定与 transform 归零同帧完成,并把 .panning 的摘除推迟一帧 —— 它关着色块的 left 过渡,早摘就会看到色块滑一下。
  • 顺带消掉两处每帧的强制同步布局:旧实现每帧先读 scrollTop 再比较,而上一帧刚写过 left,这一读就把上一帧的样式变更强制同步布局掉;现改为由 mousemove 判定「纵向这一帧有没有动过」,不动就完全不碰 scrollTop、也不进 syncWindow。
  • 新增 .bars 层:色块不再直接挂在 .track 下,而是挂在一层 .bars 上 —— 它由 transform: translateX(var(--tl-pan)) 统一平移,并靠 overflow: hidden 把移出轨道两端的关系裁掉(否则会盖到左侧的人名栏上)。刻度与朝代带各自加上同一条 transform;--tl-pan 写在 #scroll 上 —— 它是这三者唯一的共同祖先(.axis 并不在 .timeline-body 里,第一版曾把变量挂错了地方)。
  • 拖拽期刻度左右各多铺一屏:平移是在预铺的节点上「滑」的,只铺视窗内那几根的话,一滑就露白。预铺的一屏用完时做一次「重锚」(reanchorPan:把基准挪到当前视图并重铺),所以超长甩动也只是每屏一次整算,而非每帧。
  • 拖拽期不做横向裁剪:此时 L 可能为负(人生在视窗之前)而 W 恒为正,两者都是合法的 CSS 值,超出部分交给 overflow 裁。「未裁剪值 + 平移量」正好等于当前视图下的正确位置与宽度;一旦裁掉(L 归零、W 变负),平移过来就再也对不上 —— 而且负的 width 是非法声明,会被浏览器整条丢弃、元素只能停在旧位置。
  • 门禁:五项自检全 ERROR 0 / WARN 0,tools/smoke.js 断言 162 → 177 项(新增「表1 拖拽」一组 15 条,直接盯住「拖拽期间零布局写入」这条不变量)。
V1.14 更新要点(2026-09-22)
  • 新增表32【安居乐业】:辑录古代游艺与竞技 57 项——围棋、象棋、六博、双陆、樗蒲、打马、叶子戏、麻将、七巧板、鲁班锁、九连环、华容道、灯谜、飞花令、蹴鞠、马球、捶丸、角抵、相扑、拔河、投壶、射箭、骑射、田猎、龙舟竞渡、冰嬉、曲水流觞、中秋赏月、斗鸡、斗蟋蟀、放风筝、踢毽子、抖空竹、荡秋千、舞龙、舞狮、踩高跷、社火等,按十一类编排:棋弈 5 · 博戏 6 · 益智 5 · 酒令 4 · 球戏 4 · 角力 5 · 射御 5 · 水冰 4 · 岁时 7 · 斗戏 3 · 游艺 9。每条列出分类 · 时代 · 相关人物 · 玩法 · 简介,「玩法」一栏写清怎么玩。
  • 把散在别表的游艺条目迁了过来:【天工机巧】里原有围棋、蹴鞠、风筝、七巧板、鲁班锁五条,它们与其说是「发明」不如说是「游艺」,现已迁入本表并从原表移除(天工机巧 61 → 56 条)。是迁移而不是重复收录——同一个东西只留一个家,否则审计会报跨表同名。
  • 新表追加在【市井百物】之后,让「作物 → 器物 → 游艺」连成生活一片;【锦绣神州】由 No.32 顺延为 No.33。全站现为 33 节 / 31 张数据表 / 2135 条内容,可滚动区域 31 → 32 个。
  • 相关人物一栏尽量落到实处,共 17 处关联:围棋→谢安(围棋赌墅)、打马→李清照(《打马图经》)、弹棋→曹丕(《弹棋赋》)、华容道→曹操、投壶→司马光(《投壶新格》)、射箭→养由基与李广、骑射→赵武灵王、蹴鞠→霍去病与朱瞻基、马球与拔河→李隆基、捶丸→朱瞻基、龙舟竞渡→屈原、冰嬉→爱新觉罗·弘历、元宵观灯→杨广、重阳登高→王维与杜甫、曲水流觞→王羲之、中秋赏月→苏轼、放风筝→鲁班、田猎→齐宣王。
  • 六条百科义项人工核定:接口按条目名命中的是错义项,已改用更精确的关键词并锁定 —— 骰子→投子、升官图→选官图、清明踏青→踏青、元宵观灯→赏灯、重阳登高→重阳节、拇战→划拳。57 条全部写入正确词条 id。
  • 门禁:五项自检全 ERROR 0 / WARN 0,tools/smoke.js 断言 161 → 162 项;verify_baidu.js 复核需更新 0 条(有词条 2133 / 无词条 2)。
V1.13 更新要点(2026-09-22)
  • 新增表13【雄文壮词】:辑录中国古代千古流传的名文 80 篇,自先秦诸子、史传直至晚清;按体裁分十类——诸子 12、史传 10、论说 11、奏议 5、书信 8、序跋 7、游记 7、杂记 11、辞赋 6、碑祭 3。《出师表》《谏太宗十思疏》《马说》《过秦论》《兰亭集序》《滕王阁序》《岳阳楼记》《项脊轩志》《少年中国说》等俱在其中,每条列出时代 · 作者 · 体裁 · 名句 · 简介六栏。
  • 新表插在【诗词歌赋】之后(让诗词、名文、书画连成一片),原表13–表31 顺延为表14–表32:导航、名句条、卡片表号、列宽总表、data.js 顶部规范与 README 一并同步。全站现为 32 节 / 30 张数据表,可滚动区域 30 → 31 个。
  • 人物库补录 10 位名家:左丘明、吴均、丘迟、归有光、袁宏道、魏学洢、张溥、张岱、林嗣环、沈复 —— 他们正是上列名文的作者,原先不在库中,会让作者名显示成灰色的【未收录】。人物库 1141 → 1151 位,他们的生卒年一律照实(左丘明两缺、林嗣环与沈复卒年不详,按项目惯例填 null 显示为【不详】)。
  • 80 篇的百度百科词条 id 已全覆盖,条目名与百度正式词条名不同者另写 baikeTitle。其中两条需人工锁定:《鸿门宴》的接口主词条是 2011 年电影《鸿门宴传奇》、《庖丁解牛》的主词条是成语条目 —— 已按史传 / 文章义项写入正确 id 并加 baikeLock。
  • 顺带订正一处旧账:styles.css 单元格样式区的 7 条表号注释自 V1.01 插入两张表后一直未同步(其中一处表名写成「吐故纳新」,实为【固本培元】),本次一并改正。
  • 门禁:五项自检全 ERROR 0 / WARN 0,tools/smoke.js 断言 160 → 161 项;verify_baidu.js 复核需更新 0 条(有词条 2081 / 无词条 2)。
V1.12 更新要点(2026-09-22)
  • 时间轴的行改成绝对定位,滚动一帧零 DOM 增删。V1.11 的行复用每跨 44px 仍要「删首行 + 插尾行 + 改两个撑高块高度」,这三件事都会让 #rows 布局失效 —— 每滚 44px,整条可见带都要重排重绘一次。现在每行的纵坐标就是「序号 × 44」,直接用 transform 摆位(不参与布局),容器高度一次写死:平移窗口只是把走出去的那几行重填成新进来的那几行。实测每帧 DOM 搬移 3 → 0,属性写入 8 次,且都不触发整条带重绘。
  • 筛选切换快了,连点尤其明显。槽位数不变时就地重填(不再摘下来再插回去)、分块首块 200 → 60 行、同一帧内连点合并成一次重建、容器高度写入前先比。实测同一帧内连点两次的 DOM 操作 746 → 313,耗时(jsdom 口径)384ms → 99ms。
  • 九张表的类别分类收敛(137 类 → 63 类),原则是只在合乎逻辑时合并,不新增含糊的「其他」:典籍 19→10、典故 11→4、书画 11→3、茶 18→7(归入六大茶类 + 再加工茶)、薪火 12→6(依非遗分类)、珍馐 37→6(原先「菜系 + 形态」两套维度混用,统一按品类)、兵器 5→4、器物 13→12;作物 11 类数目不变,只把名不副实的「经济林木」改为「林果作物」。
  • 表23【碎金削玉】的类型列去掉彩色标签改成与其它表一致的普通文本,并移到【代表人物】之后(列宽同步重排)。
  • 右侧新增上下两个圆形按钮,点一下跳到相邻那张表。它与左侧球阵共用同一序列与同一个跳转实现,当前位置直接读球阵状态;到第一张 / 最后一张时按钮自动置灰。
  • 整体流畅度收尾:① 【落定】态的吸顶导航关掉毛玻璃(底色已近乎不透明,留着只会每帧重采样背后内容);② 柔化边缘的「可滚动余量」按布局代记忆化 —— 表格滚动路径的布局读取 60 → 0;③ 名句条每 6 秒轮换一次,原先 31 条各读一次 offsetWidth 强制回流(31 次),改为双 rAF 批量落位;④ --bar-h 写入前先比,避免每次 ResizeObserver 回调都让全站引用它的元素失效重算。
  • 顺带:分块首块收小后首屏 DOM 25,263 → 23,526 元素;筛选重建的次序修正为「先把滚动条归零、再建窗口」(原先会按旧位置白建一次)。
  • 门禁:五项自检全 ERROR 0 / WARN 0,tools/smoke.js 断言 140 → 160 项。
V1.11 更新要点(2026-09-22)
  • 表1 的滚动卡顿找到根因并重做。虚拟窗口此前是「每跨 44px 就把 #rows 清空、重造整窗约 40 行」——逐帧实测 678 次 DOM 操作/帧(其中 218 次是元素分配)。现在改为只增删首尾那几行 + 节点池复用:摘下来的行直接还给池子,滚回来时取用即可,连 createElement 都不再发生。实测 678 → 10 次/帧,元素分配 218 → 0。
  • 纵向滚动不再重算横向几何。色块位置改为「建行时即定位」,并把刻度、朝代带、色块的重算按 [viewStart, viewEnd] 缓存 —— 纯纵向滚动一帧都不会走进 updateTimeline(原先每帧都要重写 19 条时代带与数十个刻度的样式)。
  • 撤掉表1 上的行级动效(按「以减少卡顿为优先」)。时间轴的行会随虚拟窗口不断换入换出,任何行级动画都必然被反复重放:行左侧强调条与 生命条生长两项连同其整套生长窗口机制一并移除。其余动效(开卷序列、卡片错峰入场、表格行强调条、表头下划线、滚动柔化边缘、关系图生长、地图水墨渗开)不受影响 —— 它们都不在表1 的滚动路径上。
  • 数据来源收敛为单一处。28 张内容表的 tbody 原先在三个地方各写一遍(index.html 的 id、els 的键、TABLE_DEFS 的 body 字段),现在由 key 推导(#<key>Body);同时删掉 3 个从未使用的 els 键。
  • 人名链接模板去重:figLinks 与 authorLinks 原先各自维护一份逐字相同的链接模板、且都带一个从未使用的参数,现合并为一份。
  • 顺带修掉两处小问题:① 虚拟窗口平移后,定位高亮会丢(重建行时没带 .locate)——现在填行时就补上;② 定位时的高亮扫描原先遍历全部 1141 人,改为只扫窗口内的约 27 行。
  • 门禁:五项自检全 ERROR 0 / WARN 0,tools/smoke.js 断言 137 → 140 项(新增行池复用、滚动分离两组)。
V1.10 更新要点(2026-09-22)
  • 修正关系图的错误连线。原来自动补出的「传承」边共 137 条,其中大量是错的 —— 例如「硕德八剌 → 陈友谅」(陈友谅是元末自立为帝的群雄,并未继承元帝位)。根因是朝代桶不等于政权:周桶里收了 26 个诸侯、五代桶里 10 个政权、宋桶里还混着辽金夏与吐蕃,于是任何「同桶 + 生年更早」的推断都会串出假继承链(还有「周武王 ⇒ 齐桓公 ⇒ 晋文公」「刘备 ⇒ 孙权 ⇒ 曹丕 ⇒ 刘禅」「也先 ⇒ 朱元璋」「旻宁 ⇒ 洪秀全」这类)。
  • 改法:传承只来自显式帝系。新增 TL_SUCCESSIONS —— 按政权分组的君主先后次序(46 个政权 / 113 条边),只收录在位先后可考者;单君主政权(陈汉、瓦剌、太平天国…)仍单列一行,用以说明「此人自成政权、不是谁的继承人」。
  • 自动补边统一降级为「同代」。原先是三条推断各自声称一种具体关系(皇帝→传承、非皇帝→君臣、工匠→同侪),现在只剩「同代」=同朝代桶内、生存期确有重叠 —— 这是可确证的弱关系,不会再断言任何可能错误的具体关系;每人封顶 8 条,免得被同代人灌满。判定改用与时间轴色块同一口径的名义 60 年时间块(生卒有缺时补足),不再把「生年不详」当成 −∞(否则卒年可考、生年不详的人会被判成与同桶所有人重叠)。
  • 软硬一眼可分:确证关系用实线、保留「画线」入场动效;推断得到的「同代」用虚线、图例标注「(推断)」。相应地,陈友谅的关系图从 2 个节点(且是错的)变成 9 个同代人(硕德八剌、妥懽帖睦尔、王蒙、倪瓒…)。
  • 顺带修正数据:李建成、李元吉二人从未即位,role 由 emperor 改为 minister(原会被混进唐帝系);取消「同侪」推断 —— 它只对 artisan 生效,而 role=artisan(界面标「百家」)里收着苏轼、辛弃疾、李清照、沈括,语义本就错位。
  • 表格尺寸统一:三处滚动视口原先各写各的高度(时间轴 86vh、表2 90vh、内容表 70vh),现统一为 --pane-h: 76vh;时间轴卡片原先自带 18px 内边距、表头再用负边距抵消,也一并去掉 —— 30 张表卡从此同为「表头 + 视口」两段式,高度完全一致。
  • 新增折叠按钮:每张表卡右上角一个圆圈按钮(简约环形 + 一个会翻转的箭头),点一下把表格收成只剩标题栏的窄条,再点恢复。折叠会改变文档高度,故同时刷新侧栏锚点缓存;打印时一律强制展开、按钮隐藏。
  • 顺带修掉一个打印漏项:@media print 的展开名单里一直没有 .timeline-scroll,打印时间轴会被裁到一屏 —— 已补齐(并把 height 归 auto)。发布门槛五项全 ERROR 0 / WARN 0,tools/smoke.js 断言 119 → 137 项。
V1.09 更新要点(2026-09-22)
  • 动效第二批(五项):① 关系图生长——连线按真实线长「画」出来、节点依次弹入;② 时间轴生命条从左侧长出来;③ 地图朝代轮廓水墨渗开——旧轮廓淡出、新轮廓先描边再填色;④ 吸顶导航「落定」态(滚过首屏后投影加深、底色转实);⑤ 首屏规模数字滚动计数。
  • 新增首屏规模数字:标题下现算一行「31 节 · 29 张数据表 · 2003 条内容 · 1141 位人物」。数值由 TABLE_DEFS 与人物库实时汇总,不与内容脱节;进入视口时从 0 滚上去。
  • 效率优化:消除滚动路径上的强制同步布局。侧栏「当前表」原先每帧都要读 offsetTop / offsetHeight / clientHeight / scrollHeight,而同一帧里又写了 .rail-fill 的高度 —— 于是每次滚动都强制浏览器立刻同步布局一次。现把球心坐标、滑轨可平移量、视口高度、文档总高按 layoutEpoch 记忆化,并给高度与位移的写入加「值没变就不写」的守卫;时间轴的容器高度也并入 measureRows() 一次量取。吸顶导航的毛玻璃半径由 8px 降到 5px(sticky + backdrop-filter 会在整页滚动时每帧重新采样背后内容,开销随半径近似二次增长)。
  • 实测对比(每 30 帧统计一次「布局读取次数」,数值越低越好):整页滚动 211 → 99,其中 97 次是缓存首次填充,稳态由约 5 次/帧降到接近 0;时间轴滚动 300 → 60,只剩 scrollTop 这个必要输入;表格滚动 66 → 60。另有 8 处 transition: all 收敛为显式属性清单(--t-ctl)。
  • 顺带修正:深链 #r=人物 原先无条件走瞬时切换(冷启动深链也不播入场),现改为只在「替换一个已打开的等尺寸面板」时才瞬时,与 #p= / #e= / #w= 三条分支保持一致。发布门槛五项全 ERROR 0 / WARN 0,tools/smoke.js 断言 101 → 119 项。
V1.08 更新要点(2026-09-22)
  • 新增「动效层」:全站补上一套克制的动效,共九个部分,全部只动 transform / opacity / box-shadow,不动任何会引起重排的属性。独立为 motion.css + motion.js 两个文件,整份删除即回到 V1.07 的行为。
  • 开卷与入场:首屏印章 → 标题 → 分隔线 → 导航分四拍落位(约 0.8s,只播一次);33 张卡片进入视口时按同屏次序错峰上移淡入(步长 60ms、上限 180ms)。只对卡片外壳,不对表格行——时间轴的行会被虚拟窗口反复重建,行级动画必然重放。
  • 响应与层次:控件悬停上浮 1px、按下回缩到 0.97;表格行与时间轴行悬停时左侧强调条滑出;表头当前排序列的下划线滑出(钩子是已有的 aria-sort,未改一行 JS);名句条换句改为方向性切换(旧句上移淡出、新句自下方浮入)。
  • 滚动与窗口:29 个滚动容器在「下面还有内容」时底边 24px 柔和淡出(用 position: sticky 伪元素实现,不改变滚动高度、也不触发重排),滚到底自动收起;二级窗口的面板补上「上浮 + 极轻收缩」入场,名片窗口内三块再依次淡入——位移与缩放都不影响 fit(),因为它量的是 svg.clientWidth(布局尺寸,不受 transform 影响)。
  • 不伤内容的三重保险:一切「初始隐藏」只挂在 html.anim-ready 之下,而这个类由 motion.js 在确认环境支持 IntersectionObserver 且用户未要求减少动态效果之后才加;万一 IO 存在却不工作,1.4s 后兜底点亮全部卡片。「未加载」「不支持」「减少动态效果」三种情况都让页面完全回到原样,不存在内容卡在看不见的状态。
  • 顺带清理:过渡时长与缓动原先是十几处手写的 .15s ease / .18s ease,现收敛为 --t-fast / --t-base / --t-slow 与 --ease-out / --ease-io(令牌放在 styles.css,正是为了让动效层可以整份删除而不坏基线);删除时间轴行入场动画这段死代码——它自 V1.06 虚拟窗口化起就被 .rows.no-anim 永久关闭,早已不再播放。发布门槛五项全 ERROR 0 / WARN 0,tools/smoke.js 断言 88 → 101 项(新增动效一组,其中「无 IO 时必须完全不做入场」与「有 IO 时 33 张卡片必须全部完成入场」互为反面)。
V1.07 更新要点(2026-09-22)
  • 新增【物埠民丰】(No.29):辑录中国古代常见的粮食作物与经济作物 54 种——五谷(稻、粟、黍、稷、麦、菽)与高粱、荞麦、青稞、薏苡、玉米、甘薯、马铃薯等杂粮,绿豆、赤小豆、豌豆、蚕豆、豇豆等豆菽,桑、大麻、苎麻、葛、黄麻、棉花、亚麻等纤维作物,芝麻、油菜、花生、向日葵、油桐、乌桕等油料,以及甘蔗、蓝草、茜草、苏木、花椒、八角、胡椒、茱萸、茶树、烟草与菰、菱、莲藕、芡实等水生作物。
  • 新增【市井百物】(No.30):辑录中国古代常见的手工艺品与器皿大类 56 类——陶作(彩陶·黑陶·白陶·印纹硬陶·低温铅釉陶)、瓷作(青瓷·白瓷·青花·釉里红·五彩·斗彩·粉彩·影青·建盏·紫砂器)、漆作(漆器·螺钿·金银平脱)、金工作(青铜礼器·铜镜·金银器·宣德炉·铁器)、玉石砖瓦(玉器·石雕·砖雕·瓦当·画像砖)、文房(印章·文房四宝)、编织(竹·藤·草·柳·竹席)、木作(明式家具·灯彩)、织绣印染(刺绣·织锦·蓝印花布)、日用杂器(铁锅·蒸笼·茶具·灯具·瓷枕·屏风·梳篦·油纸伞·折扇·博山炉)与民俗工艺(泥塑·面塑·爆竹),另收玻璃器与牙雕两门外来工艺。
  • 两表即刻并入既有机制:均按朝代排序(表头可点击切换)、首列点击开条目名片、左下角【查看百度百科】直达精确词条——110 条全部写入 baikeId;「相关人物」列的人名照例是可点击的蓝链。
  • 内容口径:作物按「可考的栽培/传入时代」系年,「原产·传入」标明是本土驯化还是西域、南亚、美洲传入;有争议处如实注明(高粱起源有中国原产与非洲传入两说,稷在文献中或指粟、或指黍)。因此本表既能看作物谱系,也能看一部中外交流史。
  • 同步与规模:【锦绣神州】由 No.29 顺延为 No.31,全站共 31 节(时间轴 + 29 张数据表 + 地图);可滚动区域 28 → 30 个;data.js 顶部【数据录入规范】、列宽总表、导航与侧栏球阵、validate.js SCHEMA、colcheck.js ERA_FIELD、verify_baidu.js 表清单与 README 一并更新。发布门槛五项全 ERROR 0 / WARN 0,tools/smoke.js 断言 86 → 88 项。
V1.06 更新要点(2026-09-22)
  • 新增【全站检索】:右下角常驻「检索」按钮,⌘K / Ctrl+K 或 / 任一即可唤起。检索范围覆盖全部 29 张表(人物库 1141 位 + 26 张内容表 1893 条),条目名、人物、朝代、作者与简介正文都能命中,支持部分匹配(输入「李」可查到李白、李清照)。结果按「完全相同 → 名称开头 → 名称包含 → 仅正文包含」四级排序,命中片段在条目名里高亮;↑↓ 选择、Enter 直接跳到该行并短暂标黄、Esc 关闭。索引在首次打开面板时才构建(实测约 30 ms),不占首屏时间。
  • 表2 风流人物改为分块渲染:1141 行原先在初始化时一次性写入 DOM,现改为首屏先写 200 行、其余按帧补齐;打开名片、复制表格、导出 Excel、检索定位等入口都会先自动补齐,不会读到半张表。
  • 表1 岁月长歌改为虚拟窗口:行高固定 44px,故改用「上撑高块 + 视口内的行 + 下撑高块」等价模拟全量布局,1141 行只保留视口附近的 27 行真实节点,滚动时窗口随之平移。总高度与滚动条位置与原先完全一致;打印或导出 PDF 前自动展开为全部行,打印完收回。
  • 两条渲染路径合并为一:表2 原先另有一套「每次重建整段表头 + 全量 tbody」的实现,与 26 张子表平行维护,这也是「aria-sort 必须在两处同步」这一隐患的根源。现统一为一条路径(过滤 → 排序 → 分块写入 → 同步表头);表2 表头随之改为 index.html 里的静态标记,排序键与比较函数集中一处。
  • 26 张表的定义收成一份配置:原先 26 处 makeTable({…}) 调用散落在文件各处、与数据声明交错,现集中为 TABLE_DEFS 数组(列定义 cls + html 一目了然),并清掉 9 个从未使用的排序方向变量与 20 余处无效的 hasFig 字段。
  • 顺带修复:点击子表表头排序时,首次点击会把排序方向算成非法值(箭头翻转、但行的顺序没变)——方向变量原先未初始化,现已在初始化时补上。
  • 实测首屏(jsdom 口径,真实浏览器约为其几分之一):初始化 1433 ms → 770 ms,首屏 DOM 元素 43,871 → 23,688,两者均下降约 46%。
  • 工程:补齐 V1.05 遗漏的版本号同步(.ip-lead、data.js 头部注释、各工具脚本头部)并清掉页面上重复的 V1.05 版本记录块;发布门槛五项全 ERROR 0 / WARN 0,tools/smoke.js 断言由 55 项增至 86 项(新增分块渲染、时间轴虚拟窗口、静态表头、全站检索、地址栏状态五组)。
  • 地址栏即状态:打开人物名片 / 条目名片 / 关系图 / 诗词全文 / 检索面板时,把状态写进地址栏(#p=人物、#e=表|条目、#r=人物、#w=诗名、#s检索)。于是「浏览器后退」等于关掉当前窗口,不再一点后退就离开本站;链接也能直接分享或收藏。关闭按钮立即关窗,并把地址栏同步为「剩下最上层窗口」的状态,历史里不留残影。
  • 长距离跳转不再「滚半天」:顶部目录与侧栏的章节跳转,距离超过约 3 屏时改为瞬时定位,并给目标卡片一次落点描边(近距离仍平滑滚动)。侧栏「当前是第几表」的判定改为缓存各锚点的文档坐标,只在页面高度变化时重算——滚动时不再逐个读布局。
  • 百科义项修正:【游子吟】改指孟郊诗作(原指向同名歌曲)、【十面埋伏】改指传统琵琶曲(原指向 2004 年电影)、【游龙戏凤】改指京剧传统剧目(原指向 2009 年电影)。前两条靠 baikeLock 锁定 id,琵琶曲则改用百度百科的别名词条「淮阴平楚」自动命中。
V1.05 更新要点(2026-09-21)
  • 窗口行为与尺寸:二级窗口打开时锁定页面滚动(一级界面不再跟着滚);窗口尺寸改为视口 × 黄金分割比(宽高各取 0.618、取整像素,随窗口实时重算);关系图左下角新增【查看人物简介】按钮,与名片里的【查看其关系图】互为往返。
  • 首列条目名单行化:各表第一列的条目名一律单行显示,不再折成两行;并按各表最长条目名重配 15 张表共 34 条列宽,各列之和仍恒为 100%。
  • 百度百科直达精确词条:新增 baikeId(lemmaId,决定落到哪个义项)、baikeTitle、baikeLock 三个字段;全量核查 26 张表 1893 条,写入 1891 条词条 id 并勘误 48 处关键词(弓→弓箭、风筝→纸鸢、步步高→民乐义项等),点开多义词条不再停在选择页。
V1.04 更新要点(2026-09-21)
  • 27 张关联表系统性增补:面向全部关联表做了一轮「先补最薄的、再逐表补齐」的内容扩充,条目总数由 1830 增至 2500+。补得最多的是原先偏薄的几张:梨园雅韵(戏曲)26→72(补入元杂剧《望江亭》《鲁斋郎》《李逵负荆》《灰阑记》《魔合罗》等、南戏四大传奇、明清传奇《浣纱记》《十五贯》《一捧雪》,以及京剧《四郎探母》《贵妃醉酒》《锁麟囊》《群英会》《空城计》等 20 余出);丝竹管弦(乐器)28→67(补入京胡、板胡、高胡、坠胡、月琴、扬琴、排箫、管子、铜鼓、骨笛、敔、柷、镈,以及维吾尔、藏、朝鲜、哈萨克等民族乐器);大音希声(乐曲)27→58(补入《碣石调·幽兰》《酒狂》《潇湘水云》《胡笳十八拍》之外的《大胡笳》《渔歌》《樵歌》《捣衣》《普庵咒》,及广东音乐与近现代名曲);固本培元(武功)28→65;凤冠朱颜(衣着)31→65;名山大川 35→65;风云际会(人物组合)31→63;千金良方(方剂)30→76(补入《伤寒论》《金匮要略》经方与温病三宝等)。
  • 人物库大幅补录:由 912 位增至 1141 位(+229)。既补入此前完全缺失的上古与商周关键人物(黄帝、炎帝、蚩尤、太甲、周成王、周康王、周穆王、鲁庄公、晋厉公、楚共王、吴王阖闾、田忌、成得臣),也补齐了历代被其他表引用却未收录者:汉代(陈平、冒顿单于、党人领袖李膺与陈蕃、黄巾张角、云台二十八将与商山四皓全部成员)、魏晋南北朝(沈约、谢朓、任昉、王融、范云、陆倕、竟陵八友、冯太后、李冲、昙曜、乐僔、綦毋怀文)、唐代(十八学士全员、李建成、李元吉、张柬之、太平公主、来俊臣、仇仁良、唐文宗、韦皋、公孙大娘、董庭兰)、宋代(中兴四将、永嘉四灵、江西诗派、郭沔、王惟一、陈抟)、元代十三位杂剧作家、明清(秦淮八艳、明末四公子、清初四僧、清初四王与六家、乾嘉学派、桐城派、浙西词派、文字狱诸案的当事人方苞/金圣叹/戴名世/查嗣庭/徐述夔、以及慈禧、马新贻等)。
  • 新增人物条目一律遵守既有约定:只收卒年早于 1912 年者,身份字段只取皇帝/重臣/名士/百家四类,生卒史无明载者一律记「不详」。因此有约 20 处引自近现代人物(聂耳、任光、吕文成、何柳堂、刘明源、王惠然、黄海怀、王昌元、蔡龙云、王芗斋、黄飞鸿等)的字段改为留空,人名保留在简介正文中——这些曲目与人物的信息不受影响,只是不再生成指向人物库的链接。
  • 勘误与去重:审计脚本以「生卒年完全相同」为线索复查全库,发现并合并了两组本轮新引入的重复——曾参=曾子、仲由=子路(库内原本已有信息更全的条目,含名句与详版简介),组合成员引用同步改名。别名对齐若干处:唐尧→尧、虞舜→舜、汉文帝→刘恒、唐玄宗→李隆基、和珅→钮祜禄·和珅;非人物引用(石国为国名、永嘉书会才人为集体署名)清空。
  • 事件表补入 30 起(60→90):传说时代阪泉之战与涿鹿之战、少康中兴、伊尹放太甲、成康之治、穆王西征,以及春秋战国长勺、泓水、城濮、崤、邲、鄢陵、柏举、桂陵、马陵、伊阙、巨鹿之战,汉代垓下之战、白登之围、七国之乱,东汉党锢之祸与黄巾起义,唐代玄武门之变与神龙政变,宋代陈桥兵变与杯酒释兵权,明代靖难之役、土木之变、夺门之变与张居正改革。为适配既有的紧凑排版,事件「发生时间」栏统一改写为「前684年」「约前26世纪」这类与库内一致的简写。
  • 新增表的列宽随之调整:事件表朝代栏与组合表所处时期栏由 8% 加宽到 10%(长文本栏等量让出),因为这两栏会出现「五代十国,辽」这类跨朝代双色标——运行验证中的「内容宽度 vs 列宽」逐格比对把这两处夹了出来。
  • 五项自检 validate.js/checkpage.js/colcheck.js/smoke.js/lint.js 全部通过,ERROR 0 / WARN 0,运行验证 47 项全绿。
V1.03 更新要点(2026-09-21)
  • 【查看百度百科】按钮全部可用:逐条核查了 26 张表共 1306 个条目的百科链接,查出 51 条指向百度并不存在的词条(点开只会落到「尚未收录该词条」的搜索页)。其中 47 条改用更精确的关键词救回——北宋交子→交子、岳飞案→岳飞、德化白瓷烧制技艺→德化白瓷、宋神臂弓→神臂弓、马王堆素纱襌衣→素纱襌衣、圯上拾履→张良、伍子胥一夜白头→伍子胥 等;确实无词条的 4 条(殷之三仁、商初二相、武丁贤佐、陕甘回乱)标为无条目,按钮自动隐藏、不再跳转。核查后 1261 条全部有对应词条,0 条死链。
  • 顺手重写了核查脚本:旧脚本靠抓 /item/ 页面来判断词条是否存在,而百度现已对直连返回 403「百度安全验证」——一旦重跑就会把所有条目判成死链、抹掉全部百科按钮。新脚本改用百度百科开放接口,覆盖全部 26 张表(原来只覆盖 5 张),写入标准 JSON,并且默认只报告、要写入得显式加 --fix,还加了「异常请求超过 5% 即中止、不写文件」的失败关闭保护。校验器同步新增 baike 取值合法性检查。
  • 键盘与读屏可用性:28 个可滚动区域(时间轴 + 27 张表)加了 tabindex="0" role="region" 并关联到各自标题——此前键盘用户根本无法聚焦这些区域来滚动,读屏也识别不到;弹窗补上焦点管理——打开后焦点移入面板、关闭后归还触发元素、Tab 只在弹窗内循环,此前打开弹窗后焦点仍留在背景页面上、Tab 会在看不见的内容里游走;排序表头写入 aria-sort(表2 与 27 张子表),此前只有一个 ▲/▼ 字符,读屏读不出「已按此列升序」。
  • 窄屏导航:≤860px 时导航栏改为单行横向滚动。原先 29 个栏目会换行,把吸顶导航撑到 200px 以上且一直挡在最上层——手机竖屏时接近半屏高度都被它占掉。
  • 锚点定位更准:吸顶导航的实际高度量出后写入 CSS 变量 --nav-h,各卡片的 scroll-margin-top 用它计算。原先写死 66px,而导航在 1360px 视口下就已折成两行,从目录跳转后标题会被遮住一截。
  • 工程清理:16 个已执行完毕的一次性补丁脚本移出项目(存于工作区归档);删除两处死代码(resetFiltersToAll、catType)。运行验证由 41 项增至 47 项。
  • 四项自检 validate.js/checkpage.js/colcheck.js/smoke.js 全部通过,ERROR 0 / WARN 0。
V1.02 更新要点(2026-09-21)
  • 人物名片的三个「关联块」全部可点击:卡片底部的【另见 · 本页其它表中的条目】【关系图中的人物】【同时代人物】原先是纯文字胶囊,现在点人名直接打开该人物的二级窗口、点条目名直接打开该条目的二级窗口,不必再回到表里去找。同时按你的要求去掉胶囊里的身份小字,只留人名(原来的「段思平 大理国开国君主」这类身份注记会盖过人名本身)。
  • 关系图默认比例明显放大:原先适配函数给画布上下各留了 90px 空白,而关系图面板本身只有 450px 高,可用高度只剩一半,星形小图常被压到 0.6 倍以下、节点名只有 8px 看不清。现把面板放大到 860×580(人物名片同步放大,两者仍严格等尺寸以保证瞬时切换不跳版),留白收到 56px,缩放上限放到 1.8 倍。实测同一人物(冯道,17 个节点)由约 0.5 倍提升到 1.07 倍,节点名清晰可读。
  • 【千金良方】列宽重排:【出处】栏原先只有 10%,像《太平惠民和剂局方》这种 10 字书名会被折成两行——已加宽到 13%;同时按你的建议收窄【功效主治】43%→33%,并把原本更窄的【主要成分】23%→30%(方剂成分常达 30 余字,原宽只能挤成三行)。
  • 修正全表 46 处文字溢出:写脚本逐单元格比对了「内容实际宽度」与「列宽」,发现 8 张表共 46 处单元格会横向溢出到邻列——最严重的是【奇案异闻】的时间栏,内容是一整句年份叙述(如「清同治十二年(1873)发案,光绪三年(1877)昭雪」),因锁定了单行,30 起案件无一例外全部溢出;此外还有【瑰宝传世】的文物名称(元青花萧何月下追韩信图梅瓶等 3 条)、【禅茶一味】的茶类与主要产地、【珍馐美馔】的代表人物、【翰墨书香】的类别、【贝叶遗珍】的宗教、【往事勾陈】与【吉光片羽】的朝代栏。已按「短字段给足不折行、长文本允许折行」的原则逐列重排,9 张表列宽调整后各列之和仍恒为 100%,重跑体检为 0 处溢出。
  • 把这次体检固化成发布门槛:tools/smoke.js 新增「内容宽度 vs 列宽」检查(遍历全部 2701 个不折行单元格逐格比对),以及关系图默认比例、名片胶囊可点击性两组断言。运行验证由 31 项增至 41 项,全部通过。
  • 四项自检 validate.js/checkpage.js/colcheck.js/smoke.js 全部通过,ERROR 0 / WARN 0。
V1.01 更新要点(2026-09-21)
  • 新增两张表:No.15【奇案异闻】收录历代著名案件 30 起——明末三大案(梃击/红丸/移宫)、清末四大奇案(杨乃武与小白菜、张文祥刺马、杨月楼、太原)、甘肃冒赈案、戊午科场案、苏报案、巫蛊之祸、乌台诗案、岳飞案、明初四大案、方孝孺案、袁崇焕案等,分「案件名/朝代/时间/相关人物/案情概要/结局与影响」六栏;No.16【志异妙传】收录真实性存疑而戏剧性强的人物轶事与传说 34 则——千里送京娘、狸猫换太子、唐伯虎点秋香、苏小妹三难新郎、空城计、过五关斩六将、七步成诗、铁杵磨针、力士脱靴、人面桃花、东床快婿、雪夜访戴、梁祝化蝶、木兰从军、孟姜女哭长城等,末栏专设「虚实考辨」逐条说明该故事与正史的出入、流传脉络与成书来源。
  • 人名点击统一:表2 之后各表(含新表)中的人名一律弹出人物名片二级窗口,不再跳转到表2 定位;关系图入口沿用名片内的【查看其关系图】。原来扁平的「发明人/译者/方剂出处人物」等列也改为可点击人名(「鸠摩罗什(译)」「冯道(倡刻九经)」这类带括注的写法可正确识别到人)。
  • 物件名点击统一:表2 之后各表第一列的物件名称不再直接外链百度百科,改为弹出条目名片二级窗口——版式仿人物名片:主文本(事件影响/文物简介/典籍简介等)+次级长文本小节+短字段表+相关人物胶囊;左下角按钮位置与【查看其关系图】完全一致,名称改为【查看百度百科】(该条目百度无对应词条时自动隐藏按钮)。全站第一列自此交互一致。
  • 表1 拖拽性能:轴刻度与朝代带原先每帧用 innerHTML 整段重建(19 条时代带+数十个刻度,含 HTML 解析),是拖拽卡顿的最大来源;改为节点池——元素只建一次,之后仅写文本/位置/显隐,并去掉 .rows.panning * 这条会一次性命中六千多个元素的选择器,纵向滚动的写入也并入同一帧。配合既有的「只更新视口内约 20 行」,拖拽期间每帧的 DOM 写入降到几十次。
  • 表1 名称栏收窄:左侧「姓名/身份」栏由 240px 收到 190px(窄屏仍 132px)——取值按最长姓名「爱新觉罗·努尔哈赤」9 字实测算得,既不再留大片空白,也不溢出。
  • 清朝皇帝改用全称:康熙→爱新觉罗·玄烨、雍正→爱新觉罗·胤禛、乾隆→爱新觉罗·弘历、努尔哈赤→爱新觉罗·努尔哈赤、皇太极→爱新觉罗·皇太极,与既有的顺治/嘉庆/道光/咸丰/同治/光绪/宣统体例一致。改名只动人物引用字段,散在正文里的「康熙四十四年」「乾隆扩建」等年号用法保持原样(另有 800 余处 reign 字段存的是「时代/年号」语义,一并跳过)。顺带修正三处既有偏差:雍正原被误标为「名士」且无在位年(应为皇帝·清世宗·1722–1735),康熙与乾隆的在位年原仅记为「清」。
  • 关系图切换不再闪烁:从人物名片点【查看其关系图】时,名片与关系图面板尺寸完全相同,而关系图原先要再从透明处淡入 0.2 秒,中间会露出背后页面(观感即「闪一下」)。现改为瞬时切换(跳过动画),并把关系图层级提到名片之上,视觉上像是同一块面板直接换了内容。
  • 修正一处会让人物静默消失的数据错误:有 14 位人物的 role 被写成不存在的 general(庆忌、巴蔓子、季布、张议潮、苏定方、薛仁贵、黄巢、瓦氏夫人、李成梁、秦良玉、邓世昌、萨布素、渥巴锡、赖恩爵),而筛选器只认皇帝/重臣/名士/百家四类,导致他们在表1 时间轴与表2 中完全不出现。已按库内既有武将的统一归类改为「重臣」(韩信、卫青、岳飞、戚继光等历来如此)。校验器同步新增该项检查。
  • 新增运行验证脚本 tools/smoke.js:用 jsdom 把 index.html 真跑起来并实际点击——检查各表渲染行数是否等于数据条数、三种弹窗能否打开与切换、关系图是否带瞬时切换、缩放后刻度与朝代带是否仍写入合法值。这是静态检查覆盖不到的一层(前三项自检只看文件文本,发现不了「渲染出来是空的」「点不动」)。未装 jsdom 时自动跳过。
  • 四项自检 validate.js/checkpage.js/colcheck.js/smoke.js 全部通过,均 ERROR 0 / WARN 0(运行验证 31 项全绿)。
V1.0 · 基线版本要点(2026-09-18)
  • 内容勘误与去重:清除 21 首重复收录的诗作(V1.35 增补时误与既有条目重录),并合并 6 组同物异名条目——环首刀/汉环首刀、齐胸襦裙/齐胸衫裙、金华火腿/火腿、筝/古筝、六祖坛经/坛经、长江三峡/三峡;修正【长江三峡】朝代与年份相互矛盾(原标汉・前 300 年);回填杨广、钮祜禄·和珅、墨子等条目的信息。
  • 内容增补:新增诗经名篇与历代名作共 28 篇(关雎、蒹葭、孔雀东南飞、陌上桑、燕歌行、侠客行、月下独酌、登岳阳楼、卖炭翁、乌衣巷、泊秦淮、滕王阁序、出师表、岳阳楼记、醉翁亭记、爱莲说、赤壁赋、鹊桥仙、一剪梅、题临安邸、山坡羊·潼关怀古等),诗词表自 104 增至 132 篇;典籍表增补《全唐诗》《黄帝内经》《伤寒论》《神农本草经》《三十六计》《尔雅》《方言》7 部,自 95 增至 102 部;人物库增补陆九渊、林升、黄巢、拓跋焘、落下闳、张芝、索靖、惠能、文成公主、段思平、唃厮啰、丘濬、奢香夫人、瓦氏夫人、阿曼尼莎罕、李成梁、秦良玉、利玛窦、努尔哈赤、皇太极、萨布素、渥巴锡、赖恩爵、丁宝桢、吴大澂、李金镛、严复、丘逢甲、巴蔓子、牟子共 30 位,自 891 增至 921 位(其中 9 位与既有条目重复,已于本轮合并,详见下条)。
  • 交互统一:【锦绣神州】(No.27)省份代表人物的人物名片不再另设窗口,改为复用表2 的人物弹窗——命中人物库者显示生卒、类别、传世名句并可跳关系图,未收录者(多为近现代人物)以同款降级样式展示简介;同时把省份人物名称与人物库对齐(唐太宗→李世民、武则天→武曌、唐伯虎→唐寅、成吉思汗→铁木真、明成祖→朱棣、慧能→惠能),命中率由 101/139 提升至 132/139。
  • 地图精度:【锦绣神州】各朝代实控轮廓由省份实际边界求并集后重绘——扫描线填充 → 等值线提取 → 抽稀 → 平滑,每个朝代由原先的 8–15 个顶点加密到 272–1320 个顶点,边界贴合真实地理形状;并集仅由现代省级单元构成,因此轮廓必然落在现代版图之内,只叠加、不抹除中国疆域。
  • 版式与文档:版本说明与免责声明移至【锦绣神州】之后,两者改用同一套卡片视觉;README 与 data.js 顶部【数据录入规范】按实际字段重写;新增 tools/audit.js 全表审计脚本(重复/近似重复/朝代与年份矛盾/人物引用)与 tools/gen_outline_dense.js 轮廓生成器,使维护链路更完整。
  • 结构与可访问性:27 张表卡片的标签统一为 <section>(原先 13 张是 <div>),页面主体改为 <main> 并加「跳到主要内容」链接;4 个弹窗补齐 role="dialog"、aria-modal、aria-labelledby;25 张表格关联到各自标题,切换按钮补齐 aria-pressed;新增统一焦点环、prefers-reduced-motion 支持与无脚本提示。
  • 样式与打印:清除 7 处已无引用的死样式;新增 @media print 打印样式——打印或导出 PDF 时自动隐去导航、弹窗与装饰,展开滚动容器、压缩字号,只留表格内容。
  • 数据写法与旧账:data.js 中 TL_COSTUMES、TL_PROV_FIGURES 共 525 处非引号键写法(JS 字面量)统一规范为标准 JSON 键(改前改后深度比对,内容一致);历史遗留的 HistoryEvents_Battles_Timeline.csv 经逐条比对确认 151 行已全部并入 data.js,移出工作目录存于归档。
  • 自检脚本:新增 tools/checkpage.js 页面结构与样式自检(标签配对、锚点、重复 id、弹窗可访问性、表格标注、死样式、CSS 配平、JSON 写法),与 tools/validate.js 共同构成发布门槛。
  • 发布门槛 node tools/validate.js 与 node tools/checkpage.js 全部通过,均 ERROR 0 / WARN 0。
  • 表1 岁月长歌调整:左侧「姓名 / 身份」栏改为左对齐并加宽至 240px(窄屏 132px),宽度抽为 CSS 变量由轴、时代带、标签栏三处共用;姓名一律单行显示,超长以省略号收尾,不再溢出到时间轴。
  • 表1 拖拽优化:修复了越界拖动时纵向滚动失效的 bug(事件对象被变量覆盖,导致取到 undefined);轨道宽度改为按下时量取一次,消除每帧强制同步重排;时间轴由「每帧更新全部 900+ 行」改为只更新视口内约 20 行,并补上滚动与窗口尺寸变化时的节流重算;拖拽期间禁止文本误选。
  • 表2 交互调整:点击姓名弹出人物名片,关系图改从名片内进入;【简介】列不再单独响应点击,与其它单元格一样回落为「在时间轴定位并缩放」。
  • 人物简介分简繁两版:新增详版字段,名片内优先展示详版并附「表内简版」对照行(表2 的简介列内容不变)。本轮为 99 位代表性人物撰写详版,由 28 字左右的简版扩写至 70–130 字;名片下方另自动汇总【另见条目】【关系人物】【同时代人物】三块关联信息,对全部人物生效。
  • 合并 9 组同人异名重复:以「生卒年完全相同」为线索全库扫描,查出同一人录入两条并合并——勾践/越王勾践、汉武帝/刘彻、魏徵/魏征、尉迟恭/尉迟敬德、秦琼/秦叔宝、努尔哈赤/爱新觉罗·努尔哈赤、皇太极/爱新觉罗·皇太极、雍正/爱新觉罗·胤禛、郑燮/郑板桥;合并时只改人物引用字段,确保「越王勾践剑」等物件名不受影响。人物库 921 → 912。审计脚本亦新增该项检测。
  • 列宽全面梳理:此前 3 张表(经纶世务、贝叶遗珍、凤冠朱颜)完全没有列宽定义,各列均分宽度——短列留大片空白、长文本列挤成多行;另有 10 张表的首列无人认领宽度。本版按各列内容实际渲染宽度(短列取最长条目、长文本取 90 分位、名单列取 90 分位)重新配平,25 张表、123 条列宽规则全部收归一处(styles.css「列宽总表」),每张表各列之和恒为 100%;单元格左右内边距 18px → 14px,首末列与卡片标题对齐。新增 tools/colcheck.js 列宽自检(配平/缺宽度/死规则/朝代列是否够宽)。
  • 生卒年全面核对:逐条复核全部 912 位人物的生卒年,共修正 70 处。其中一处为明显错值——东汉太尉杨震原记「前 59—124 年」(享年 183 岁),实为 54—124 年;曹参原记生年前 205 年(享年 15 岁)亦系笔误。其余多为取消占位年份:生年史无明载者(如三国赵云、黄忠、魏延、颜良、文丑、田丰,秦代蒙恬、蒙毅、赵高、王翦,唐代高仙芝、哥舒翰、杨国忠等)原统一借用邻人年份或取整年份,现一律改记「不详」,时间轴相应显示为虚线色块。另补正若干可考年代:宋襄公卒于前 637 年、主父偃卒于前 127 年、张敞卒于前 47 年、段志玄生于 598 年、高适生于 704 年、松赞干布生于 617 年、王坚卒于 1264 年。审计脚本新增「生卒年可信度」检测(逻辑矛盾/寿命异常/占位年份)。
版本号与发布规则
  • 版本号每次更新在末位 +0.01(V1.0 → V1.01 → V1.02 …)。
  • 每次发布更名并复制一份备份副本,保留最近 10 个版本;旧版本移入 _archive/。
  • 发布门槛:node tools/validate.js、node tools/checkpage.js、node tools/colcheck.js 须全部 ERROR 0 / WARN 0。
  • 版本记录只保留最近十条;此前 V1.25–V1.39 的逐条记录随旧版整体归档,不再列于页面。

免责声明

本工具为个人整理的历史文化普及读物,内容辑录自公开资料与既有研究,供学习与检索之用。使用前请留意以下四点。

一 · 医药安全
【灵根仙草】【千金良方】所列药材与方剂均辑录自古代医籍(《黄帝内经》《伤寒论》《金匮要略》《备急千金要方》《太平惠民和剂局方》《脾胃论》《温病条辨》《医林改错》等),属历史文献记载,其配伍、剂量与炮制皆依古法,且多含毒性药材(附子、细辛、朱砂、雄黄、马钱子、罂粟壳、木通等)。切勿自行照方抓药、随意增减剂量或长期服用;如有身体不适,请赴正规医疗机构,由执业中医师四诊合参、辨证论治后遵医嘱使用。本工具不构成任何医疗诊断或用药建议。
二 · 史料与年代
人物生卒、朝代纪年、事件年代、战役胜负、典籍著者、方剂出处等均辑录自公开资料与既有研究,部分记载存在异文或学界争议,仅供参考,不构成权威定论,引用请以正史、专著等权威出处为准。
生卒年仅供示意与检索:凡标【约】、标负数(公元前)、生卒空缺,或属商与西周者,多为依纪年、历法取整或后世推算的约略值。中国信史有连续逐年记载始于公元前 841 年(共和元年);商代人物生卒几乎全为现代推算(如伊尹、盘庚、武丁),误差常以数十年计;西周共和以前的周王与重臣亦无逐年可考。请以《中国历史纪年表》《夏商周断代工程 1996–2000 阶段成果报告》及《史记》《资治通鉴》等为准。
【奇案异闻】【志异妙传】两表的可信度不同,请分别看待:前者为史载案件,但其中个别条目(如【太原奇案】)主要出自戏曲、评书与公案小说的传唱,史料依据薄弱,已在表内「结局与影响」栏注明;后者收录的正是真实性存疑而戏剧性强的轶事与传说(如千里送京娘、狸猫换太子、唐伯虎点秋香),表中设有「虚实考辨」一栏,逐条说明该故事与正史的分歧、流传脉络与成书来源——阅读该表请以「虚实考辨」栏为准,勿将故事本身当作史实。
本版起,生年或卒年史无明载者一律记作「不详」,表格显示为「不详」、时间轴上以虚线色块表示,不再填写占位年份。因此本库中「不详」条目较多,这是如实反映史料状况,并非数据缺失。少数史书明载的长寿者(如孙思邈 101 岁、张苍 104 岁)及上古传说人物(尧、舜、姜子牙)保留传统说法,其具体数值不宜作史实引用。
三 · 地理与疆域
【锦绣神州】以现行中国版图为底本,国界、省界、南海诸岛与九段线均完整呈现;其上叠加的各朝代范围为手绘示意,仅用以直观呈现不同时期的大致控制区域,只作叠加,不抹除、不改写任何中国疆域。历史疆域随时代变迁、学界亦多异说,图中轮廓不可作为边界依据。
四 · 使用建议
本工具为纯前端单机站点,全部内容存于 data.js,可离线使用(仅百度百科跳转需联网);条目中的外部链接指向百度百科,其内容与本工具无关。欢迎指出讹误,以便后续版本修订。