個人網站設計方案文檔

全棧個人網站設計系統規範,驅動 apps/personal

版本 1.0 主色調 #B5C7EB 低飽和藍 副色調 #E89EB8 低飽和粉 設計工具 Lunacy(免費) Token 管理 tokens.js(單一源)

一、設計原則

01 克制工程美學

設計服務於內容。強調色只用於必要的互動引導(CTA、hover、active),其餘用灰階和大量留白。頁面第一感應是"整潔的工程文檔"而非"設計作品集"。

02 單一 Token 源

所有視覺變量(色彩、字型、間距、圓角、陰影)集中在 tokens.js,注入為 CSS 自定義屬性。任何調整只改一個文件,兩個網站同步更新,杜絕視覺漂移。

03 深色/淺色雙模式

所有組件通過 CSS 變量實現主題切換,無需重寫樣式。深色模式不是"淺色模式取反",而是獨立設計的表面層次系統,確保層次感不丟失。

04 移動優先

從 320px 開始設計,向上擴展。媒體查詢只做增強,不做補救。導航、搜索、卡片網格均有完整的三段式斷點方案(移動 → 平板 → 桌面)。

05 漸進式互動

靜態 HTML 是基礎,互動是增強。搜索、篩選、主題切換以 vanilla JS 實現,Pagefind 靜態索引無需後端。圖表(Recharts/Chart.js)作為 Astro Island 按需加載。

06 語義化配色

藍色(#B5C7EB)用於信息類標籤、鏈接、技術棧。粉色(#E89EB8)用於個人類、情感類標記和裝飾性漸變。灰階負責結構和層次,不與品牌色競爭。

二、色彩系統

品牌色

Primary Blue
#B5C7EB
--color-primary
Primary Dark
#8AAAD6
--color-primary-dark
Secondary Pink
#E89EB8
--color-secondary
Secondary Dark
#D4809F
--color-secondary-dark

漸變

--gradient-brand(主漸變:CTA、Hero 裝飾)
--gradient-brand-subtle(淡漸變:卡片背景、Tag)

灰階系統

Gray 50
#F8F8F7 — 頁面背景
Gray 200
#E2E0DC — 邊框、分隔
Gray 500
#7E7A72 — 說明文字
Gray 800
#252320 — 主文字
深色主題:頁面背景 #141311,表面層 #1E1C1A / #252320 / #2E2C29,文字取反灰階(#EBE9E5 / #A8A49C)。所有切換通過 tokens.js 的 DARK_TOKENS 對象集中管理。

三、字型系統

--font-display
DM Serif Display
Regular / Italic
個人網站 · Personal
--font-body
DM Sans
400 / 500 / 600
這是正文字體,適合長篇閱讀和 UI 標籤使用。This is the body typeface.
--font-mono
JetBrains Mono
400 / 500
const site = 'personal.dev'; // 代碼、日期、鍵盤快捷鍵

字級比例(基準 15px,8px 網格對齊)

--text-4xl / 48px
Display 標題
Hello.
--text-3xl / 38px
Hero 標題
開發者 · 設計師
--text-2xl / 30px
Section 標題
精選項目
--text-xl / 24px
卡片主標題
研究指數系統
--text-md / 17px
副標題 / 引語
構建可維護的個人知識系統
--text-base / 15px
正文
這是正文段落,用於文章內容和項目描述。行高 1.75,確保長篇閱讀舒適。
--text-sm / 13px
說明文字
導航鏈接、表單標籤、輔助說明文字
--text-xs / 11px
元數據
2025-03-28 · 5 min read · TAG

四、組件樣式規範

4.1 導航欄

Preview — 桌面端
Chris.dev

4.2 搜索框

Preview

4.3 標籤(Tag)組件

Preview — 四種語義
Astro TypeScript 個人項目 工具 筆記 精選

4.4 項目卡片

Preview — 三列網格
封面圖 / Screenshot
研究指數系統
自定義量化指數可視化平台,支持多維度數據疊加展示
AstroD1研究
封面圖 / Screenshot
個人博客系統
基於 MDX 的靜態博客,支持代碼高亮和圖表嵌入
TypeScriptMDX
封面圖 / Screenshot
CF Workers API
邊緣計算 API 路由層,搭配 D1 實現輕量後端
Workers後端

4.5 開發記錄列表

Preview
Astro Islands 與 React 組件集成實踐
Cloudflare D1 冷啟動延遲分析
Pagefind 靜態搜索索引配置指南

4.6 指標卡 / Metric Card

Preview — 首頁用
12
開源項目
48
開發記錄
6
技術棧
2025
起始年份

4.7 按鈕

五、跨設備適配規範

斷點尺寸導航卡片網格文章側欄 TOC搜索
Mobile 320–767px 漢堡菜單,側滑抽屜 grid-cols-1 折疊為頂部按鈕,點擊展開 圖標觸發全屏遮罩搜索
Tablet 768–1023px 水平鏈接(精簡版) grid-cols-2 折疊為頂部按鈕 導航欄內嵌搜索框
Desktop 1024px+ 完整水平導航 + 快捷鍵提示 grid-cols-3 固定右側 240px,滾動高亮 導航欄 pill 搜索框 + ⌘K

適配要點

六、Lunacy 設計工具使用指導

Lunacy 免費版功能完整,無需付費。以下流程針對個人網站設計稿,確保設計與 tokens.js 保持同步。

文件組織結構

個人網站.free
├── 📄 0_設計系統
│   ├── 色彩(對應 tokens.js 變量名)
│   ├── 字型比例
│   ├── 間距規範
│   └── 組件庫(Symbol Library)
├── 📄 1_線框圖
│   ├── 首頁(Mobile / Tablet / Desktop)
│   ├── 項目展示頁
│   ├── 開發記錄頁
│   └── 文章詳情頁
├── 📄 2_高保真設計稿
│   ├── 淺色主題
│   └── 深色主題
└── 📄 3_交接說明
    └── 間距標注 + 組件對照表

設計系統搭建步驟(優先完成,再畫頁面)

Lunacy 特有功能利用

設計稿 → 代碼映射規則

七、專業方案查漏補缺

高優先級

SEO 結構化數據

每篇文章和項目頁需添加 JSON-LD Schema(BlogPostingSoftwareSourceCode),提升搜索引擎收錄質量。Astro 可通過組件集中管理。

高優先級

深色主題閃爍防止(FOUC)

Astro SSG 頁面在 <head> 最前插入內聯 <script> 讀取 localStorage 主題偏好,在 CSS 加載前設定 data-theme,杜絕白色閃爍。

高優先級

無障礙(Accessibility)

所有圖片需 alt 屬性;色彩對比度需達 WCAG AA(正文 4.5:1,大字 3:1);導航需 aria-label;搜索需 role="search"

中優先級

字體加載策略

Google Fonts 使用 font-display: swap + preconnect 預連接。考慮字體子集化(僅加載中文常用字)以優化加載速度,特別是移動端。

中優先級

OG Image 生成

每篇文章自動生成帶標題的 Open Graph 圖片(1200×630px),用於社交分享預覽。可使用 Astro + Satori 在構建時生成,存為靜態 PNG。

中優先級

RSS Feed

開發記錄需提供標準 RSS/Atom Feed(/rss.xml),Astro 有官方 @astrojs/rss 包,配置極簡。

中優先級

CSP 安全頭

在 Cloudflare Pages 的 _headers 文件設置 Content-Security-Policy,防止 XSS 攻擊。需與使用的 CDN 資源域名白名單協調。

低優先級

Cloudflare Web Analytics

免費、隱私友好的頁面瀏覽統計,無需 Cookie 同意橫幅。在 CF Pages 控制台一鍵開啟,自動注入腳本。