實作札記 · 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。作品站唯一持久的瀏覽器狀態,是本地閱讀偏好記錄。