Hanpu Li 李函璞

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