在 HTML 中建立 Flexbox 的方式是將父元素的 display 屬性設為 flex,然後在裡面放入子元素;Flexbox 產生器會根據五個封閉集合屬性加上整數像素的間距,為容器產生完全相同的 CSS 宣告區塊。產生器絕不接受任意的樣式文字、嵌入的 HTML、原始選擇器或單位字串。每個關鍵字都會依據 W3C 的 Flexbox 與 Box Alignment 規範進行驗證,並序列化為一個固定的 .container 規則,其中包含 display:flex 以及五個設定的屬性。由於預覽與複製的 CSS 來自同一個經過驗證的具型別狀態,因此這兩種表示方式不會悄悄不一致。這個工具完全在當前的瀏覽器分頁中執行,絕不會上傳你的設定或產生的 CSS,也不會在遠端執行結果。你可以決定哪個元素套用這個規則,以及要在其上疊加哪些響應式或子元素規則。本文將逐步說明該規則搭配使用的 HTML 標記、工具所公開的五個控制項、建立安全容器的確切步驟,以及如何在複製前驗證預覽。

how to make flexbox in html
如何在 HTML 中製作 Flexbox:建立容器區塊

Flexbox 容器在 HTML 中的樣貌

在產生器介入之前,容納 Flexbox 的 HTML 標記既精簡又可預測。你選擇一個父元素,以及任意數量的你想要對齊的子元素。父元素會成為 flex 容器,而每個直接子元素則會成為 flex 項目。產生器所產生的 CSS 只會作用於父元素;子元素則由你自己撰寫。

一個最簡的 HTML 骨架會使用一個帶有 container 類別的父元素,包裹任意數量的子元素。.container 這個類別名稱與產生器輸出的選擇器一致。你可以在自己的樣式表中重新命名,但保持名稱相同能讓你直接原樣貼上輸出結果。項目可以是 div、article、li、button 或任何其他的流動內容 —— 版面引擎不在乎你選擇哪種元素,只要求每個項目都必須是容器的直接子元素。

產生器刻意只專注於容器規則,因為方向、換行、分佈、交錯軸對齊以及項目之間的間距都是在容器規則中決定的。子元素的規則、尺寸以及媒體查詢屬於各專案特有的設定,應放在你自己審閱過的樣式表中,而不是放在通用的容器區塊裡。

產生器公開的五個控制項

Flexbox 產生器公開了剛好五個設定欄位加上一個數值間距。每個欄位都接受取自 W3C 規範的封閉關鍵字清單,因此工具可以在渲染預覽或序列化輸出之前,以確定性的方式進行驗證。下表列出每個控制項及其可接受的值。

控制項CSS 屬性可接受的關鍵字值
方向flex-directionrow, row-reverse, column, column-reverse
換行flex-wrapnowrap, wrap, wrap-reverse
主軸分佈justify-contentflex-start, flex-end, center, space-between, space-around, space-evenly
交錯軸對齊align-itemsstretch, flex-start, flex-end, center, baseline
項目間距gap從 0 到 100 的整數像素,以 px 表示

方向控制項是最具影響力的選擇,因為它決定了主軸。row 會將行內方向設為主軸,因此 justify-content 會以水平方式排列項目。column 會將區塊方向設為主軸,因此同樣的 justify-content 值會以垂直方式排列項目。換行決定項目是維持在單行、形成額外的 flex 行,或是在反向交錯軸方向形成多行。交錯軸對齊會沿著交錯軸將項目定位於每一行內,並接受 baseline,讓文字行無論字型度量為何都能對齊。gap 欄位代表相鄰 flex 項目與 flex 行之間的間距,只接受整數像素值,並會以明確的 px 單位序列化。負數、小數、科學記號、單位文字、像 00 這樣的前導零格式、空輸入,以及超過 100 的值,都會被解析器拒絕,而不是被悄悄強制轉換。

逐步建立容器

這是核心的工作流程。步驟順序與 Flexbox 產生器頁面上的控制項分組方式一致,每一步使用的都是經過驗證的值,預覽也會依據這些值來渲染。

  1. 在瀏覽器中開啟 Flexbox 產生器。頁面會顯示五個 select 欄位和一個數值間距輸入框,以及一個顯示五個項目的固定預覽區域。
  2. 選擇方向控制項。水平的話從 row 開始,垂直堆疊的話從 column 開始。reverse 的變體會沿著主軸鏡像排列項目的順序。
  3. 選擇換行。使用 nowrap 可維持單行,使用 wrap 允許產生新的 flex 行,或使用 wrap-reverse 在反向交錯軸方向上產生新行。
  4. 選擇主軸分佈。start、center 與 end 值會將項目分別聚集在開頭、中間或結尾。space-between、space-around 與 space-evenly 值則會分配剩餘空間。
  5. 選擇交錯軸對齊。Stretch 會讓項目填滿交錯軸的尺寸;start、center 與 end 值會將項目對齊到對應的邊緣;baseline 則會對齊文字行。
  6. 輸入一個從 0 到 100 的整數像素間距。若不要間距就保留 0,或使用 8、12、16、24 作為常見的節奏值。
  7. 檢視五個項目的預覽。預覽只有在每個欄位都有效時才會更新;無效的間距或任何狀態不一致會讓預覽停留在先前的狀態,並顯示驗證訊息。
  8. 點擊 Generate CSS。工具會重新驗證目前的完整狀態,然後輸出一個固定順序、剛好包含六個宣告的確定性 .container 區塊。
  9. 使用複製按鈕複製規則,或手動選取可見的程式碼。若剪貼簿呼叫失敗,CSS 仍會保持可見,讓你仍能手動選取並複製。

對任一 select 或間距的任何編輯,都會立即清除先前產生的 CSS、任何先前的驗證錯誤以及複製成功的確認訊息,讓你永遠不會讀到與目前設定不符的過期輸出。

產生的 CSS 包含(與省略)的內容

產生器刻意輸出一個小而可預測的區塊。確切知道你能得到什麼 —— 以及得不到什麼 —— 能保護你不會誤以為工具提供了它實際上沒有的功能。輸出永遠會以下列這個固定順序包含這六個宣告。

永遠包含永遠排除
display: flex瀏覽器前綴 (-webkit-, -moz-, -ms-)
flex-direction(所選的值)flex 簡寫、flex-basis、flex-grow、flex-shrink
flex-wrap(所選的值)order 屬性
justify-content(所選的值)align-content、place-content
align-items(所選的值)容器尺寸、overflow、min/max 尺寸
gap(所選的值並附帶明確的 px)媒體查詢、後援樣式、子選擇器

這讓產生器成為一個安全的起點,而不是一套完整的響應式版面系統。一旦這個區塊放進你的樣式表,你就會在其上加入子元素規則、尺寸、響應式覆寫以及書寫模式的考量。.container 區塊的結束大括弧永遠存在,且整個輸出都是純文字,你可以直接貼到任何標準樣式表中,不需要再額外處理。根據 MDN 對於 基本 flexbox 概念的總覽,這六個宣告涵蓋了最常見的容器層級決策;子元素層級的行為則在該頁面的另一處單獨說明。

複製前先讀懂預覽

預覽是一個即時的、固定五個項目的呈現,由同樣經過驗證且具型別的設定所驅動,而間距會以像素明確表示。由於兩種表示方式都來自同一個經過驗證的狀態,將主軸分佈從 flex-start 切換到 space-between,然後產生,永遠會得到一個預覽中項目沿主軸散開的 .container 規則。

預覽使用的是五個固定的本地項目,而不是匯入的標記或內容,這讓控制項與呈現之間的對應關係容易閱讀。實際頁面上的項目尺寸、書寫模式、容器尺寸與可用空間仍會影響相同宣告在實際環境中的呈現,因此請將預覽視為一個忠實但有範圍限制的參考。編輯任何 select 或間距會立即從畫面移除任何先前產生的 CSS 以及任何先前的驗證錯誤;按下產生會在恢復輸出前重新驗證目前的完整狀態。無效的列舉狀態與無效的間距狀態會顯示其實際的錯誤訊息;無效的文字則永遠不會進入內嵌的預覽樣式或被複製的 CSS。

將產生的 CSS 放進你自己的 HTML

一旦你複製了規則,請將它貼到專案的樣式表,並把 .container 類別套用到你 HTML 中的父元素。典型的工作流程如下:開啟產生器、設定五個控制項與間距、產生規則、複製規則、貼到主樣式表中現有 reset 規則的下方,然後指定類別。接著,由你自己撰寫子元素的規則。例如,在工具列中按鈕的情境下,可以將那些子元素規則放在 .container button 之下,這樣你所選擇的交錯軸對齊就能讓它們在視覺上保持一致。

在實際出貨前,請使用真實的內容、真實的書寫模式、真實的視窗大小、瀏覽器縮放以及無障礙設定來測試結果。如果你想要一邊調整標記、一邊預覽旁邊的 CSS,你可以在沙盒化的預覽中編輯 HTML,在不執行程式的情況下查看呈現效果。產生器不會建立檔案、Blob URL、遠端樣式表或嵌入的框架,本機處理也代表你的設定或產生的 CSS 都不會被上傳。請把複製到的區塊當作一個值得信賴的容器起點,並在其上建構響應式、專案特有的規則。

想進一步了解,請參閱建構於瀏覽器解析器之上的 HTML 清理工具替代方案。