0909 bootstrap modal排版

更新 發佈閱讀 16 分鐘

好的,這是一個非常常見且重要的優化場景。一個清晰、整齊的 Modal 介面能大大提升使用者體驗。

讓我為你提供一個結構清晰、易於理解且美觀的解決方案。我們將運用 Bootstrap 的網格系統 (Grid System) 和表單元件 (Form Controls) 來達成這個目標。

優化核心思路

* 結構化:將 Modal 切分為 Header, Body, Footer 三個區塊,各司其職。

* 對齊:使用 Bootstrap Grid System (row 和 col) 讓 Label 和 Textbox 精確對齊。

* 間距:利用 Bootstrap 的間距工具 (mb-3 等) 創造呼吸感,讓排版不擁擠。

* 一致性:套用 Bootstrap 的表單與按鈕樣式,確保視覺風格統一。

步驟一:建立標準的 Modal 結構

首先,確保你的 Modal 具備 Bootstrap 標準的三段式結構。

* .modal-header:放置 <h1> 標題和關閉按鈕。

* .modal-body:放置四組 Label 和 Textbox。

* .modal-footer:放置兩個操作按鈕。

這能讓你的 Modal 在語意和視覺上都更加清晰。

步驟二:優化 Modal Body 的表單排版

這是排版的核心。我們將使用 Bootstrap 5 的網格系統,將四個欄位規劃成一個 2x2 的佈局。

<div class="modal-body">

<div class="row">

<div class="col-md-6 mb-3">

@Html.LabelFor(model => model.Field1, new { @class = "form-label" })

@Html.TextBoxFor(model => model.Field1, new { @class = "form-control" })

</div>

<div class="col-md-6 mb-3">

@Html.LabelFor(model => model.Field2, new { @class = "form-label" })

@Html.TextBoxFor(model => model.Field2, new { @class = "form-control" })

</div>


<div class="col-md-6 mb-3">

@Html.LabelFor(model => model.Field3, new { @class = "form-label" })

@Html.TextBoxFor(model => model.Field3, new { @class = "form-control" })

</div>

<div class="col-md-6 mb-3">

@Html.LabelFor(model => model.Field4, new { @class = "form-label" })

@Html.TextBoxFor(model => model.Field4, new { @class = "form-control" })

</div>

</div>

</div>


關鍵點解釋:

* div class="row":建立一個容器,裡面的 col จะ會水平排列。

* div class="col-md-6":

* col 代表這是一個欄位。

* md 代表在中等尺寸螢幕以上(例如桌機)生效。

* 6 代表佔據 12 格網格中的 6 格,也就是 50% 的寬度。

* 這會讓兩個 col-md-6 剛好排成一列。在手機等小螢幕上,它們會自動堆疊成垂直排列,實現響應式設計。

* mb-3:margin-bottom 的縮寫,增加每個輸入框下方的間距,避免擠在一起。

* form-label 和 form-control:這是 Bootstrap 5 官方推薦的表單樣式,能確保視覺一致性。

步驟三:美化 Footer 的按鈕

將按鈕放在 .modal-footer 中,並使用 Bootstrap 的按鈕樣式,可以讓它們看起來更專業。

<div class="modal-footer">

<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">關閉</button>

<button type="submit" class="btn btn-primary">儲存變更</button>

</div>


關鍵點解釋:

* btn:Bootstrap 按鈕的基礎樣式。

* btn-secondary:次要按鈕的樣式(通常用於取消、關閉)。

* btn-primary:主要按鈕的樣式(通常用於確認、儲存)。

* data-bs-dismiss="modal":一個 Bootstrap 的 JavaScript 屬性,點擊此按鈕會自動關閉 Modal。

完整的 VB.NET MVC (.vbhtml) 範例

這是一個可以直接使用的完整程式碼,假設你的 View Model 叫做 MyViewModel。

<div class="modal fade" id="myBeautifulModal" tabindex="-1" aria-labelledby="myModalLabel" aria-hidden="true">

<div class="modal-dialog modal-lg">

<div class="modal-content">


@Using (Html.BeginForm("YourAction", "YourController", FormMethod.Post))

@' 或者使用 Ajax.BeginForm '

@Html.AntiForgeryToken()


@' ================== Modal Header ================== '

<div class="modal-header">

<h1 class="modal-title fs-5" id="myModalLabel">編輯資料</h1>

<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>

</div>


@' ================== Modal Body ================== '

<div class="modal-body">

<div class="row">

@' --- 第一列 --- '

<div class="col-md-6 mb-3">

@Html.LabelFor(Function(model) model.Field1, New With {.class = "form-label"})

@Html.TextBoxFor(Function(model) model.Field1, New With {.class = "form-control", .placeholder = "請輸入欄位一"})

@Html.ValidationMessageFor(Function(model) model.Field1, "", New With {.class = "text-danger"})

</div>

<div class="col-md-6 mb-3">

@Html.LabelFor(Function(model) model.Field2, New With {.class = "form-label"})

@Html.TextBoxFor(Function(model) model.Field2, New With {.class = "form-control", .placeholder = "請輸入欄位二"})

@Html.ValidationMessageFor(Function(model) model.Field2, "", New With {.class = "text-danger"})

</div>


@' --- 第二列 --- '

<div class="col-md-6 mb-3">

@Html.LabelFor(Function(model) model.Field3, New With {.class = "form-label"})

@Html.TextBoxFor(Function(model) model.Field3, New With {.class = "form-control", .placeholder = "請輸入欄位三"})

@Html.ValidationMessageFor(Function(model) model.Field3, "", New With {.class = "text-danger"})

</div>

<div class="col-md-6 mb-3">

@Html.LabelFor(Function(model) model.Field4, New With {.class = "form-label"})

@Html.TextBoxFor(Function(model) model.Field4, New With {.class = "form-control", .placeholder = "請輸入欄位四"})

@Html.ValidationMessageFor(Function(model) model.Field4, "", New With {.class = "text-danger"})

</div>

</div>

</div>


@' ================== Modal Footer ================== '

<div class="modal-footer">

<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>

<button type="submit" class="btn btn-primary">確認送出</button>

</div>


End Using


</div>

</div>

</div>


啟發與思考

這個排版方式不僅僅是為了美觀,它背後蘊含著「關注點分離」與「響應式設計」的思維。

* 從混亂到有序:將 UI 元件放置在有意義的容器中(header, body, footer, row, col),就像整理房間一樣,先分類,再歸位。這能讓你的程式碼更容易維護。

* 為不同裝置設想:col-md-6 提醒我們,使用者可能用手機、平板或電腦瀏覽。一個好的介面,應該在各種裝置上都能優雅地呈現。這也是一種對使用者的愛與包容。

* 減法的美學:有時「醜」是因為塞了太多東西,或間距不足。mb-3 看似微小,卻是創造視覺呼吸感的關鍵。適當的留白,能讓焦點更集中,心境也更平靜。

希望這個結構化的方法能幫助你打造出既美觀又實用的 Modal 介面。動手試試看,你會發現介面焕然一新!


    含 AI 應用內容
留言
avatar-img
留言分享你的想法!
avatar-img
Pocheng Chiu的沙龍
0會員
4內容數
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
使用靜態檔案下載 Bootstrap 的原因主要有以下幾點: 客製化:當你下載了 Bootstrap 的靜態檔案,你可以根據自己的需求來修改這些檔案。例如,你可以改變預設的顏色、字型大小、間距等,使其更符合你的網站風格。這是直接使用 CDN 所無法做到的。 效能優化:如果你的網站只使用 Boot
Thumbnail
使用靜態檔案下載 Bootstrap 的原因主要有以下幾點: 客製化:當你下載了 Bootstrap 的靜態檔案,你可以根據自己的需求來修改這些檔案。例如,你可以改變預設的顏色、字型大小、間距等,使其更符合你的網站風格。這是直接使用 CDN 所無法做到的。 效能優化:如果你的網站只使用 Boot
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
排版微系列調專門分享如何透過一些調整讓設計與排版更好看,並且每張設計都會說明為何調整的原因,以及原本設計可能有的問題。 如果你是設計初學者那這份內容會很適合你,因為會很細節的去講解排版原因,如果你看完喜歡,我每月會有三篇微調詳解固定分享給訂閱會員,歡迎訂閱。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
公告佈達看似簡單,但如何做好才是關鍵。 只有透過適時而有效的公告,才能確保重要訊息的及時傳達,促進員工的共識和配合 最終提升整體的運營效率,為企業持續發展注入動力!
Thumbnail
公告佈達看似簡單,但如何做好才是關鍵。 只有透過適時而有效的公告,才能確保重要訊息的及時傳達,促進員工的共識和配合 最終提升整體的運營效率,為企業持續發展注入動力!
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News