跳至主要内容
💬 回報這一頁

Mockup 文件示意積木

寫文件的工具,不是產品元件。

在 Storybook 開啟

問題:截圖第一天就開始過期

改一次按鈕位置,全手冊的圖都要重錄。於是沒人重錄。於是手冊開始說謊, 而且說謊的方式很難察覺——圖看起來很專業,只是跟現在的系統不一樣。

做法:用真元件排出示意圖

  • 重點控制項 → 元件庫的真元件<Spotlight> 圈起來
  • 其餘區域 → <Placeholder> 佔位留白
  • 整體版面 → <MockScreenFrame>

元件改版,示意圖跟著改版。沒有人需要去重拍任何東西。

一步操作示意
選單
頂部狀態列
7 筆① 先切到「已確認」

使用規約

✅ 這樣做

重點包 Spotlight(真元件),其餘一律 Placeholder

🚫 不要這樣

不要用 Placeholder 去「假裝」一個真元件。那又變成一種會過期的截圖, 只是畫得比較醜。

初始畫面不能取決於瀏覽器環境

文件站是靜態產生的,第一次渲染永遠發生在沒有瀏覽器的地方。 任何「初始狀態要讀瀏覽器」的元件都會踩到同一個坑:

// ✗ 伺服器端沒有 matchMedia;就算加了防呆,
// 伺服器算出 false、瀏覽器算出 true → hydration mismatch
const [expanded, setExpanded] = useState(
window.matchMedia("(prefers-reduced-motion: reduce)").matches
);

// ✓ 初始值固定,掛載後才套用使用者偏好
const [expanded, setExpanded] = useState(false);
useEffect(() => {
if (window.matchMedia?.("(prefers-reduced-motion: reduce)").matches) setExpanded(true);
}, []);

這條適用於所有取決於瀏覽器環境的初始狀態:主題偏好、視窗寬度、觸控能力、 減少動態偏好。症狀是畫面閃一下或 React 在主控台抱怨 hydration 不一致, 而它只在正式建置後才看得到——npm start 的開發模式不會重現。

聚光用的是同一套視覺語言

<Spotlight> 用的 .spotlight-ringCoachmark 完全相同。 讀者在文件與系統裡看到的是同一種「看這裡」。

琥珀色專屬「已改動未送出」,不得用於聚光。

播放器的元件層規約

把多張示意圖串成一條流程的多步播放器(模式層的說明見 零截圖文件示意)還沒有收進本元件庫, 但它的元件層規約已經定稿。這四條都是實作時會踩到的,與模式無關:

上面那條〈初始畫面不能取決於瀏覽器環境〉是它的第一條前提,不重複寫。

減少動態偏好:預設展開,不輪播

開啟「減少動態」的使用者,看到的應該是全部展開的靜態版本, 而不是「一樣會輪播,只是沒有轉場動畫」。

理由:這個偏好設定的訴求不是「不要轉場特效」,是不要有東西自己在動。 自動輪播本身就是那個東西。

控制項要夠大

輪播控制列的預設長相通常是兩個小箭頭加一排小圓點。那是給示意用的,不是給人點的。

控制項規格為什麼
上一步/下一步文字按鈕(「‹ 上一步」),桌機 36px 高純箭頭在觸控裝置上難點,而且讀屏念不出來
步驟圓點視覺 10px,命中區 28px圓點大小是視覺需求,命中區是可用性需求,兩者不必相等
全部控制項觸控裝置由 tap-target 撐到 44px無障礙四原則

字幕要獨立一行放在按鈕上方,不要和按鈕擠在同一列—— 字幕長度會變,擠在一起時按鈕位置會隨著步驟跳動。

小螢幕:讓示意圖自己捲

示意圖有最小寬度(低於它版面會擠壞,反而失去示意的作用)。 窄螢幕的正解是讓步驟容器可以橫向捲動,不是讓示意圖跟著縮排。

.flow-step { overflow-x: auto; }
.mock-frame { min-width: 460px; }
✅ 這樣做

示意圖自己捲,頁面不捲。

🚫 不要這樣

不要讓整個頁面出現橫向捲軸。讀者會以為是版面壞了, 而且一旦頁面能橫向捲,文字段落的閱讀也跟著壞掉。

字幕格式

位置格式
每一步 開頭 + 一句「做什麼」
最後一步盡量寫「完成後你會看到:…
單張示意圖標題=一句話主旨;字幕=一句補充(位置或後果)

「完成後你會看到」這句的作用是給讀者一個驗收條件。 沒有它,讀者做完最後一步之後不知道自己做對了沒有,於是會再做一次—— 而在後台系統裡,「再做一次」經常就是重複送出。

✅ 這樣做

一張示意圖最多一個聚光。次要資訊用徽章或提示框呈現。

🚫 不要這樣

不要一張圖圈三個地方。三個重點等於沒有重點, 而讀者會開始懷疑自己是不是漏看了第四個。

取捨

示意圖不會百分百等於實際畫面(版面是簡化的)。這是刻意的—— 讀者需要的是「該點哪裡」,不是像素級復刻。

列印

.mock-placeholder 在列印樣式下補淡邊框:部分印表機仍會剝掉背景色, 補邊框至少保留形狀與標籤。詳見 列印與匯出

取用

npx shadcn@latest add https://kielchang.github.io/dooping-design-book/r/mockup.json

延伸閱讀:模式 → 零截圖文件示意