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
Pocheng Chiu的沙龍
0會員
24內容數
你可能也想看
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
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
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
公告佈達看似簡單,但如何做好才是關鍵。 只有透過適時而有效的公告,才能確保重要訊息的及時傳達,促進員工的共識和配合 最終提升整體的運營效率,為企業持續發展注入動力!
Thumbnail
公告佈達看似簡單,但如何做好才是關鍵。 只有透過適時而有效的公告,才能確保重要訊息的及時傳達,促進員工的共識和配合 最終提升整體的運營效率,為企業持續發展注入動力!
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
Thumbnail
各位格友們好!格編聽到許多格友們許願的聲音,希望能調整沙龍導覽列的房間順序,該是實踐諾言的時候了,今天格編要來分享兩個眾所期待的新功能!
Thumbnail
各位格友們好!格編聽到許多格友們許願的聲音,希望能調整沙龍導覽列的房間順序,該是實踐諾言的時候了,今天格編要來分享兩個眾所期待的新功能!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News