# 🎨 Mermaid 流程圖樣式與顏色設定範例大全 Mermaid 不僅能畫流程圖,還能透過 `style` 與 `classDef` 調整節點顏色、邊框與文字。 以下示範多種應用方式。 --- ## 🧩 1. 基本流程圖 + 顏色設定 ```mermaid flowchart TD A[開始] --> B[登入系統] B --> C{帳號正確嗎?} C -->|是| D[進入主頁] C -->|否| E[顯示錯誤訊息] E --> B D --> F[結束] style A fill:#dff0d8,stroke:#3c763d,stroke-width:2px,color:#000 style B fill:#d9edf7,stroke:#31708f style C fill:#fcf8e3,stroke:#8a6d3b style D fill:#d6e9c6,stroke:#3c763d style E fill:#f2dede,stroke:#a94442 style F fill:#ddd,stroke:#666 ``` --- ## 🔄 2. 迴圈與條件結構 (使用 classDef) ```mermaid flowchart LR A[啟動程式] --> B{是否還有資料?} B -->|是| C[處理資料] C --> B B -->|否| D[結束] classDef clsStart fill:#c8e6c9,stroke:#2e7d32,color:#000; classDef clsDecision fill:#fff9c4,stroke:#fbc02d,color:#000; classDef clsProcess fill:#bbdefb,stroke:#1565c0,color:#000; classDef clsEnd fill:#e0e0e0,stroke:#424242,color:#000; class A clsStart; class B clsDecision; class C clsProcess; class D clsEnd; ``` --- ## 🧠 3. 決策樹 (Decision Tree) ```mermaid flowchart TD A[收到使用者請求] --> B{請求類型} B -->|查詢| C[呼叫查詢 API] B -->|新增| D[呼叫新增 API] B -->|刪除| E[呼叫刪除 API] C --> F[回傳結果] D --> F E --> F classDef start fill:#f0f4c3,stroke:#827717,color:#000; classDef decision fill:#ffe0b2,stroke:#ef6c00,color:#000; classDef process fill:#bbdefb,stroke:#0d47a1,color:#000; classDef result fill:#c8e6c9,stroke:#1b5e20,color:#000; class A start; class B decision; class C,D,E process; class F result; ``` --- ## ⚙️ 4. 系統架構圖 (伺服器關聯) ```mermaid flowchart TB Client[使用者瀏覽器] -->|HTTP Request| Server[Flask 伺服器] Server --> DB[(SQLite 資料庫)] Server --> API[外部 API] DB --> Server API --> Server Server -->|HTML Response| Client classDef client fill:#e1f5fe,stroke:#0277bd; classDef server fill:#f3e5f5,stroke:#6a1b9a; classDef db fill:#fff9c4,stroke:#f57f17; classDef api fill:#ffebee,stroke:#c62828; class Client client; class Server server; class DB db; class API api; ``` --- ## 📦 5. 專案開發流程 ```mermaid flowchart TD A[需求分析] --> B[系統設計] B --> C[前端開發] B --> D[後端開發] C --> E[整合測試] D --> E E --> F[部署] F --> G[上線維護] classDef analysis fill:#fff9c4,stroke:#fbc02d; classDef design fill:#e1bee7,stroke:#6a1b9a; classDef dev fill:#bbdefb,stroke:#1976d2; classDef test fill:#c8e6c9,stroke:#2e7d32; classDef deploy fill:#ffe0b2,stroke:#ef6c00; classDef maintain fill:#f5f5f5,stroke:#424242; class A analysis; class B design; class C,D dev; class E test; class F deploy; class G maintain; ``` --- ## 🕹️ 6. 遊戲邏輯示意圖 ```mermaid flowchart TD Start[開始遊戲] --> Move[玩家移動] Move --> Check{撞到怪物?} Check -->|是| Dead[遊戲結束] Check -->|否| Coin[撿到金幣?] Coin -->|是| AddScore[加分] Coin -->|否| Move AddScore --> Move classDef start fill:#b3e6b3,stroke:#2d862d; classDef decision fill:#fff0b3,stroke:#b38f00; classDef event fill:#b3d9ff,stroke:#0047b3; classDef fail fill:#f2b3b3,stroke:#b30000; class Start start; class Move event; class Check,Coin decision; class AddScore event; class Dead fail; ``` --- ## 💬 7. 聊天機器人訊息流程 ```mermaid flowchart TD A[使用者發送訊息] --> B[Webhook 接收] B --> C[Flask 處理請求] C --> D{是否需要查資料庫?} D -->|是| E[查詢 SQLGate API] D -->|否| F[回覆預設訊息] E --> G[整合結果] F --> G G --> H[回傳至 LINE Bot] classDef input fill:#d1c4e9,stroke:#512da8; classDef process fill:#b3e5fc,stroke:#0288d1; classDef decision fill:#fff9c4,stroke:#fbc02d; classDef output fill:#c8e6c9,stroke:#2e7d32; class A input; class B,C,E,F process; class D decision; class G,H output; ``` --- ## 🎨 外型總覽 + 樣式示範(安全形狀) ```mermaid %%{init: {'flowchart': { 'htmlLabels': false }}}%% flowchart LR %% === 節點定義(多種形狀,避免使用 / 與 \ === A[矩形 Rectangle] B(圓角矩形 Rounded) C((圓形 Circle)) D{菱形 Decision} E([運動場 Stadium]) F[[子程序 Subroutine]] G[(資料庫 Database)] H{{六邊形 Hexagon}} %% === 連線示例 === A --> B --> C --> D D -- 是 --> E --> F --> G D -- 否 --> H %% === 類別樣式(安全命名) === classDef clsRect fill:#e3f2fd,stroke:#1565c0,color:#0d47a1,stroke-width:2px; classDef clsRound fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20; classDef clsCircle fill:#fff3e0,stroke:#ef6c00,color:#e65100; classDef clsDecision fill:#fffde7,stroke:#f9a825,color:#f57f17,stroke-width:2px; classDef clsStadium fill:#ede7f6,stroke:#5e35b1,color:#4527a0; classDef clsSubroutine fill:#fce4ec,stroke:#c2185b,color:#880e4f; classDef clsDatabase fill:#f1f8e9,stroke:#558b2f,color:#33691e,stroke-dasharray: 3 3; classDef clsHex fill:#e0f7fa,stroke:#00838f,color:#006064; %% === 指派類別 === class A clsRect; class B clsRound; class C clsCircle; class D clsDecision; class E clsStadium; class F clsSubroutine; class G clsDatabase; class H clsHex; ``` --- ## 🧭 實戰小例:用不同外型表示不同語意(修正版) ```mermaid %%{init: {'flowchart': { 'htmlLabels': false }}}%% flowchart TD IN([輸入/事件]) --> CHECK{條件判斷} CHECK -- 成立 --> PROC([處理流程]) PROC --> DB[(寫入資料庫)] CHECK -- 否 --> QUEUE[[送往佇列]] QUEUE --> OUT((完成)) classDef cIn fill:#e1f5fe,stroke:#0277bd,color:#01579b; classDef cDecision fill:#fff9c4,stroke:#fbc02d,color:#e65100; classDef cProcess fill:#ede7f6,stroke:#5e35b1,color:#311b92; classDef cDB fill:#f1f8e9,stroke:#558b2f,color:#2e7d32; classDef cQueue fill:#fce4ec,stroke:#c2185b,color:#ad1457; classDef cDone fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20; class IN cIn; class CHECK cDecision; class PROC cProcess; class DB cDB; class QUEUE cQueue; class OUT cDone; ``` --- ## 📝 小抄(Shapes Cheat Sheet,避開 / 與 \ 版本) - `A[Text]` → **矩形** - `A(Text)` → **圓角矩形** - `A((Text))` → **圓形** - `A{Text}` → **菱形 / 決策** - `A([Text])` → **運動場** - `A[[Text]]` → **子程序(雙層矩形)** - `A[(Text)]` → **資料庫(圓柱)** - `A{{Text}}` → **六邊形** > 需要平行四邊形/梯形時,請先確認你的平台對 `/` 與 `\` 的處理是否會被 Markdown 或前端轉義影響。若要使用: > - `A[/Text/]` → **平行四邊形(右斜)** > - `A[\Text\]` → **平行四邊形(左斜)** > - `A[/Text\]` → **梯形** > - `A[\Text/]` → **反向梯形** > 若仍報錯,建議改在 Mermaid Live(https://mermaid.live/)測試後再貼回你的平台,或將 `htmlLabels` 設成 `false`。 ## 📚 延伸閱讀 - 官方文件:https://mermaid.js.org/ - Mermaid Live Editor:https://mermaid.live/ - HackMD / Obsidian / Typora 皆支援 Mermaid ```mermaid gantt title 甘特圖範例 dateFormat YYYY-MM-DD axisFormat %Y-%m-%d section 區塊1 項目1 :active, 2024-01-01, 2024-01-10 項目2 : 2024-01-05, 2024-01-15 section 區塊2 項目3 : 2024-01-15, 2024-02-01 項目4 :active, 2024-02-01, 2024-02-15 ```