实现札记 · 2026
关于本站
本站刻意保持静态。公开页面首先是完整文档:HTML、CSS 与本地资源已经写好,只有在交互确有作用时才加入少量原生 JavaScript。
原则很简单:内容不能依赖前端框架、浏览器端翻译层或 JavaScript 渲染才能阅读。
01
架构
刻意保持静态。
作品站由小型模板与结构化 JSON 生成完整 HTML5 文档。Python 3 标准库生成器会预先输出每个语言版本,浏览器无需在运行时拼装页面。
网站从 main 分支经 GitHub Pages 发布。作品站背后没有 CMS、应用框架、数据库或服务端应用。
- 运行时
- HTML5 · CSS · 原生 JavaScript
- 构建
- Python 3 · JSON · HTML 模板
- 托管
- GitHub Pages
02
内容与语言
七个版本,没有运行时翻译。
英文、香港繁体中文、简体中文、日文、德文、法文与俄文均生成独立静态版本,各有 canonical 网址、hreflang 替代链接与语系元数据。
文学文本比一般界面文字有更严格的规则。指定情况下以繁体中文原文为准;简体文学版本只做字形转换并核对来源哈希,译文则由专门检查维持分行与分阕结构。
- 语系
- en-GB · zh-Hant-HK · zh-Hans · ja · de · fr · ru
- 文学转换
- OpenCC 辅助 · 来源哈希 · 行数一致性
- 元数据
- canonical · hreflang · Open Graph
03
版式与字体
编辑式 CSS,不用组件框架。
版式使用 CSS Grid、subgrid、容器查询、逻辑属性、自定义属性与流动的 clamp() 尺寸。媒体查询只作保守后备;支持容器查询的浏览器会让组件按自己的可用宽度重排。
字体全部以 WOFF2 自行托管。拉丁正文主要用 EB Garamond,元数据用 Courier Prime/Cousine,繁体中文与日文用 Shippori Mincho,简体中文用 Noto Serif SC,少量香港字形缺口由极小的 I.Ming 子集补齐。CJK 子集以 fontTools 与 Brotli 重建;Noto 来源以提交版本与 SHA-256 固定。
- 版式
- Grid · subgrid · 容器查询 · 逻辑属性
- 字体
- EB Garamond · Courier Prime · Cousine · Shippori Mincho · Noto Serif SC · I.Ming
- 色彩
- 明/暗色 · prefers-color-scheme
04
无障碍
可以调整,但不删内容。
作品站使用语义地标、单一主标题、跳至内容链接、清晰的键盘焦点、完整语言名称与足够大的触控目标;同时尊重减少动态、提高对比与强制色彩等系统偏好。
阅读面板可切换无衬线字体、放大文字、增加字距行距、缩窄栏宽、简化版式、减少动态与提高对比。这些都是渐进增强,只在浏览器本地保存偏好。
- 阅读偏好
- 无衬线 · 大字 · 字距/行距 · 窄行 · 简化版式 · 动态 · 对比
- 存储
- 只用 localStorage
- 检查
- 自制结构审计 · axe-core 浏览器审计
05
图片与性能
响应式媒体,不靠图库程序。
摄影与研究图版使用 picture/srcset,提供 WebP 与 JPEG 尺寸候选,并明确标注宽高与响应式 sizes。首张图优先加载,页面较下方的媒体则延迟加载并异步解码。
页面下方区段可使用 content-visibility;View Transitions 与 scroll-linked motion 都只是可选的渐进增强。用户要求减少动态时会停用动态。
- 图片
- picture · srcset · WebP · JPEG
- 加载
- 明确尺寸 · 延迟加载 · 异步解码
- 渐进 CSS
- content-visibility · View Transitions · 滚动时间轴
06
构建、QA 与部署
生成结果本身就是可测试的产物。
仓库会检查生成页是否最新、各语系结构是否一致、文学结构有没有漂移、无障碍地标与控件是否完整、本地链接和页内锚点是否有效、图片是否有替代文字,以及 JavaScript 能否解析。
浏览器 QA 另做跨语言与窄/宽视窗几何检查、axe-core 无障碍扫描与 HTML 验证。GitHub Actions 在推送与 pull request 时先跑轻依赖检查,通过后再跑浏览器套件;GitHub Pages 则独立从 main 发布同一批静态文件。
- 仓库检查
- 生成状态 · 多语言一致性 · 无障碍 · 链接/资源 · JS 语法
- 浏览器 QA
- Playwright · axe-core · html-validate
- 交付
- GitHub Actions · GitHub Pages
07
原则
本站把内容来源、生成结果与浏览器行为分成不同层次:修改结构化内容与模板,重新生成,再核对输出的文档。
渐进增强从一开始就是可有可无的一层。即使浏览器不支持某些 CSS、JavaScript 被停用,或本地存储不可用,作品仍须完整可读,导航也不能失效。
浏览器运行时的隐私
作品站不加载 analytics、广告网络、第三方 web font 或追踪 script,也不设置 cookie。作品站唯一持久的浏览器状态,是本地阅读偏好记录。