iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
Modern Web

從 UI/UX 設計到前端實作:30 天打造專屬的任務學習計時器系列 第 11

Day 11 | 切版實作:運用Modal 彈跳視窗的介面設計

  • 分享至 

  • xImage
  •  

完成了任務列表的折疊效果後,今天我們要針對任務清單上半部的操作按鈕進行 Modal(彈跳視窗 / 對話框) 的切版實作。

操作按鈕


1. 先來認識 Modal 元件

在 Web UI 中,Modal 是一個相當常見的互動元件。它可以在不離開當前頁面的情況下,跳出一個獨立的對話方塊來處理輸入、確認或提示等任務。

modal示範

常見使用場景

  • 表單輸入:如新增資料、編輯內容。

  • 重要確認:如刪除警告、警告提示。

  • 資訊展示:如條款聲明、詳細規格說明。

基礎結構解析

一個完整的 Modal 結構主要由三個部分組成:modal-header(標題與關閉按鈕)、modal-body(主要內容區域)與 modal-footer(操作按鈕區)。

<!-- 1. 觸發按鈕 -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  開啟 Modal 視窗
</button>

<!-- 2. Modal 本體 -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <!-- 標題區 -->
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">視窗標題</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      
      <!-- 內容區(可套用 Grid 系統) -->
      <div class="modal-content-body p-3">
        這裡放置主要內容...
      </div>
      
      <!-- 底部按鈕區 -->
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
        <button type="button" class="btn btn-primary">確認儲存</button>
      </div>
    </div>
  </div>
</div>

其他功能與開發注意事項

  1. 靜態背景(Static Backdrop)
    若不希望使用者點擊背景遮罩時誤關閉視窗,可以在 .modal 上加入 data-bs-backdrop="static"data-bs-keyboard="false"
    這樣使用者就必須透過點擊取消或確認按鈕才能關閉視窗,適合用於重要資料填寫或刪除確認。

  2. 支援 Grid System 網格系統
    modal-body 內部可以自由套用 .container-fluid.row / .col-* 網格系統,讓彈窗內的表單排版更有彈性。

  3. 避免多重 Modal 疊加(UX 留意點)
    Bootstrap 官方不支援同時開啟多個 Modal(一次只支援一個視窗)。雖然可以透過點擊轉換到下一個 Modal,但同時重疊開啟多個 Modal 會嚴重影響使用者體驗與遮罩樣式,需要特別留意。

(參考資料:Bootstrap 5 components-Modal)


2-1 實作:新增子任務的互動視窗

了解基礎結構後,我們先來製作「新增子任務」的 Modal 彈窗。

操作流程設計

  1. 點擊「新增子任務」按鈕。

  2. 跳出 Modal,使用者選擇「歸屬主任務」。

  3. 輸入「子任務名稱」。

  4. 點選「建立子任務」按鈕。

  5. 觸發回應(跳出新增成功提示,或顯示已存在相同名稱的錯誤提示)。

切版要點

首先在主頁面的「新增子任務」按鈕加上 data-bs-toggle="modal" 與 data-bs-target="#addSubtaskModal" 屬性。

接著修改 Modal 內容,在 modal-body 中結合 Dropdown(下拉選單) 來選擇主任務,並使用 Input Group(輸入框組) 讓使用者輸入。

新增子任務實作成果


2-2 實作:管理主任務的互動視窗

「管理主任務」按鈕則包含新增、修改名稱與刪除

各功能流程拆解(之後會使用JavaScript進行實作)

  1. 新增主任務
    在頂部的 Input 輸入框填入名稱 ➔ 點選「新增」按鈕 ➔ 觸發回應(新增成功 / 提示名稱重複)。

  2. 修改任務名稱
    在現有任務列表中,點擊該任務旁邊的 鉛筆 Icon ➔ 該列的任務名稱切換為 Input 輸入框 模式 ➔ 右側操作按鈕同步轉換為「取消」與「儲存」。

  3. 刪除主任務
    點擊該任務旁邊的 垃圾桶 Icon ➔ 跳出第二次確認視窗(提示此動作無法還原):

    • 點擊取消:回到剛才的管理視窗。

    • 點選確認刪除:顯示「已刪除成功」的 Toast 提示 ➔ 返回管理視窗(並確認該任務已成功移除)。

管理主任務實作成果


上一篇
DAY 10 | 切版實作:用 Collapse 打造獨立折疊的子任務清單
下一篇
DAY 12 | 切版實作:介紹常用元件 Dropdown 與 Input Group
系列文
從 UI/UX 設計到前端實作:30 天打造專屬的任務學習計時器12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言