# 刻板必備:排版 × 定位 × 屬性對照指南 ## 📖 一、排版概念說明:什麼是排版?什麼是骨架? 切版的本質就是:**安排每個實體區塊在頁面上的位置與分布。** 你會遇到這些排法: - 區塊**上下排列**(header 在上,footer 在下) - 區塊**左右排列**(圖片在左,文字在右) - 元素**中間置中**(用 `margin: 0 auto`) - 容器**撐滿寬度**(用 `width: 100%`) - 用 `flex` 或 `grid` 進行**分欄排列** - 用 `position` 把元素**貼邊固定在畫面上** 👉 所以,**你要控制的其實是容器怎麼排內容、內容怎麼彼此互動**。 ### 🧱 排版行為三層結構 | 層級 | 對象範例 | 排什麼 | |------|------------------|-----------------------------| | 全頁骨架 | `.page-wrapper`, `body` | `header` / `main` / `footer` 等區塊的上下結構 | | 區塊骨架 | `.container`, `.card` | 區塊內的左右欄、上下段落 | | 區塊內容 | `.title`, `.text`, `.button` 等 | 單一區塊內的細節排法 | --- ### 🔍 那麼……你要用什麼語法來控制這些「排法」? 雖然我們通通把它叫做「排版」,但實際上,CSS 中控制排版行為的語法可以分成三種不同的角色: 1. **排版屬性**:直接定義「我要怎麼排」 2. **定位屬性**:「我不要參與排列,我要自己去某個點」 3. **負空間屬性**:「我不動位置,只想靠近一點」 --- ### 📌 排版屬性 vs 定位屬性 vs 負空間屬性 | 分類 | 說明 | 常見屬性 | |------|------|------------| | 排版屬性 | 控制容器的排列方式與子元素的參與關係 | `display`, `flex-direction`, `grid-template-columns` 等 | | 定位屬性 | 跳脫原有排列、自由決定元素位置 | `position`, `top`, `left`, `right`, `z-index` 等 | | 負空間屬性 | 控制元素內外的間距(不改變排列邏輯)| `margin`, `padding` 等 | 📘 **簡單記法** > 排版是「**參與排列**」,定位是「**跳脫排列**」,負空間則是「**調整邊界**」。 --- ## 🧭 二、📘排版屬性 × 📍定位屬性 × 🔳負空間屬性 | 使用補強篇 本章將針對實務中最常見的「排版控制語法」進行補充與使用時機說明,並依據其**語法功能**與**使用位置**,分為以下三類: - 🧱 排版屬性(設定容器的排列方式與子元素的行為) - 📍 定位屬性(決定元素是否脫離排版流) - 🔳 負空間屬性(調整元素與邊界之間的距離) --- ### 🧱 排版屬性區塊(設定容器的排列方式與排版邏輯) #### ✨ `display`(顯示模式) 📌 不需搭配其他屬性即可生效,但會影響許多屬性的可用性(如 `justify-content`、`flex-wrap` 依賴它) | 值 | 中文語感翻譯 | 排列方式 | 行為說明 | |----|----------------|------------|-----------------------------| | `block ★` | 占整行 | 上下排列 | 預設區塊元素,如 div、p 等 | | `inline` | 與文字同行 | 同行排列 | 不會換行,無法設定寬高 | | `inline-block` | 可設寬高的行內元素 | 同行排列 | 不會換行,但可以設定寬高 | | `flex ★` | 彈性排版 | 排子元素 | 啟用 Flex 排版模式 | | `inline-flex` | 行內彈性排版 | 同行 + Flex | 像 inline,但內部使用 flex 排列 | | `grid ★` | 格線排版 | 排子元素 | 啟用 Grid 排版模式 | | `inline-grid` | 行內格線排版 | 同行 + Grid | 像 inline,但內部使用 grid 排列 | | `contents` | 僅保留子元素 | 無自身外框 | 自己不佔位,僅保留子元素(slot-like 用途) | | `none ★` | 不顯示 | 不參與排版 | 元素從畫面中消失,與 visibility 不同 | 📘 補充說明: - `display` 是 CSS 中最核心的排版屬性之一,控制元素的參與排列方式。 - 常見容器如 `.container`、`.section`、`.card` 等,會設為 `flex` 或 `grid`。 - `inline-*` 系列保留原本行內特性,但加上排列能力。 --- #### ✨ `flex-direction`(主軸方向) 📌 **需搭配 `display: flex` 或 `inline-flex`** 才會生效 | 值 | 中文語感翻譯 | 主軸方向 | 行為說明 | |-----------------|-----------------|----------|------------------------| | `row` ★ | 橫向(預設) | 左 → 右 | 子元素橫向排列 | | `row-reverse` | 橫向反排 | 右 → 左 | 子元素從右排到左 | | `column` | 直向排列 | 上 → 下 | 子元素上下排列 | | `column-reverse`| 直向反排 | 下 → 上 | 子元素從下排到上 | --- #### ✨ `justify-content`(主軸對齊方式) 📌 **需搭配 `display: flex` 或 `grid`** 才會生效 | 值 | 中文語感翻譯 | 對齊方向(主軸) | 行為說明 | |------------------|------------------|------------------|------------------------------| | `flex-start` | 靠起點對齊 | 左 / 上 | 貼齊主軸起點排列 | | `center` ★ | 置中 | 中央 | 所有子元素集中在中間 | | `flex-end` | 靠終點對齊 | 右 / 下 | 貼齊主軸尾端排列 | | `space-between` ★| 兩端對齊 | 首尾貼齊 | 元素間平均分配 | | `space-around` | 各留空隙 | 間距對稱 | 每側留空一半空隙 | | `space-evenly` | 完全平均分布 | 間距對稱 | 所有元素間距完全相同 | --- #### ✨ `align-items`(交錯軸對齊方式) 📌 **需搭配 `display: flex` 或 `grid`** 才會生效 | 值 | 中文語感翻譯 | 對齊方向(交錯軸) | 行為說明 | |-------------|----------------------|---------------------|-----------------------------| | `stretch` ★ | 撐滿交錯軸(預設) | 拉開對齊 | 元素高度(或寬度)一致撐滿 | | `flex-start`| 靠上對齊 | 起點對齊 | 對齊交錯軸起點 | | `center` | 垂直置中 | 垂直中線對齊 | 元素居中 | | `flex-end` | 靠下對齊 | 終點對齊 | 對齊交錯軸終點 | | `baseline` | 對齊文字基線 | 下方偏上 | 以字元基線為對齊基準 | --- #### ✨ `flex-wrap`(是否換行) 📌 **需搭配 `display: flex` 或 `inline-flex`** 才會生效 | 值 | 中文語感翻譯 | 換行行為 | 行為說明 | |------------------|--------------|-----------|-----------------------------------| | `nowrap` | 不換行 | ❌ 否 | 超出容器也不會換行(預設) | | `wrap` ★ | 自動換行 | ✅ 是 | 容器排滿會自動換行 | | `wrap-reverse` | 反向換行 | ✅ 是 | 多行從下往上 | --- #### ✨ `gap`(元素間距) 📌 **需搭配 `display: flex`、`grid` 或相關容器** 才會生效(用於子元素之間) | 值 | 類型 | 語感翻譯 | 行為說明 | |------------|----------|------------|----------------------------------| | `20px` ★ | 固定單位 | 固定像素間距 | 子元素之間保持 20px 間距 | | `1rem` | 相對單位 | 文字大小 | 根據字體大小計算的間距 | | `0` | 數值 | 無間距 | 取消子元素間隔 | 📘 補充: 可改用 `row-gap` / `column-gap` 控制單向間距。 --- #### ✨ `align-content`(多行群組對齊方式) 📌 **需搭配 `display: flex` 或 `grid`**,且僅在子元素「多行」時有效 | 值 | 中文語感翻譯 | 對齊效果 | 行為說明 | |----------------|--------------|----------|----------| | `center` | 中間對齊 | 居中 | 所有行群組置中對齊 | | `stretch` ★ | 撐滿 | 平均 | 每行等比例撐滿容器 | | `flex-start` | 靠上 | 起點 | 所有群組從上方開始 | | `flex-end` | 靠下 | 終點 | 所有群組對齊底部 | | `space-around` | 留空 | 平均分布 | 每群組上下平均留空 | --- ### 📍 定位屬性區塊(決定元素是否脫離排版流) 📌 不需搭配其他屬性即可生效,但通常與 `top` / `left` / `z-index` 等一同使用 #### 🔸 `position`(定位方式) | 值 | 語感翻譯 | 是否佔空間 | 行為說明 | |-----|-----------|--------------|------------| | `static`★ | 靜態(預設) | ✅ 是 | 預設行為,正常排版、無定位效果 | | `relative` | 相對定位 | ✅ 是 | 自己不動,可讓子元素以它為基準 | | `absolute` | 絕對定位 | ❌ 否 | 完全跳脫排版,自由貼邊 | | `fixed` | 固定定位 | ❌ 否 | 吸附在畫面上,捲動不消失 | | `sticky` | 黏住定位 | ✅ 是 | 滾到某處時吸住,但保留排版空間 | 📘 補充說明: - `absolute` 與 `fixed` 會完全脫離原本的排版空間 - `relative` 與 `sticky` 仍保留原來佔據的空間 - `sticky` 的吸附效果需要設定 `top` / `bottom` 等參數才會生效 --- #### 🔸 `top` / `bottom` / `left` / `right`(定位參數) 📌 **需搭配 `position: relative / absolute / fixed / sticky`** 才有定位效果 📘 補充說明: - 這些屬性用來控制「貼邊的距離」 - 必須搭配 `position: absolute / fixed / relative / sticky` 才有效果 | 定位方式 | 相對定位基準 | |----------|------------------| | `absolute` | **最近的 position ≠ static 的父元素** | | `fixed` | **整個畫面視窗**(viewport) | | `relative` | 自己偏移(不影響子元素) | | `sticky` | 預設行為,直到觸發吸附條件(如 top: 0) | --- #### 🔸 `z-index`(堆疊順序) 📌 **僅對 `position ≠ static` 的元素有效** | 值 | 中文語感翻譯 | 是否改變排列順序 | 行為說明 | | --------- | ------ | -------- | ------------------ | | `0` | 預設值 | ❌ 否 | 沒有特別指定順序(照 DOM 排序) | | `1`, `10` | 正值 | ✅ 是 | 越大越上層,會蓋住值較小者 | | `-1` | 負值 | ✅ 是 | 被其他元素壓在下層 | 📘 補充說明: * 適用於需要「誰蓋在誰上面」的情境,如 modal、浮動按鈕、dropdown。 * **必須搭配有定位的元素**(如 `absolute`, `fixed`, `relative`)才會生效。 --- #### 🔸 `float`(元素浮動) 📌 建議搭配 `width` 使用,避免浮動元素撐滿整行;會造成父元素「高度坍塌」 | 值 | 中文語感翻譯 | 是否脫離文流 | 建議搭配屬性 | 行為說明 | |----------|--------------|----------------|------------------|-----------------------------| | `left` | 左浮動 | ✅ 是 | ✅ `width` | 貼左側並讓文字環繞 | | `right` | 右浮動 | ✅ 是 | ✅ `width` | 貼右側並讓文字環繞 | | `none` ★ | 不浮動 | ❌ 否 | ❌ 無 | 回到預設排版,不浮動 | --- #### 🔸 `clear`(清除浮動) 📌 **通常用在浮動元素之後的元素上**,搭配 `.clearfix` 或 `::after` 使用 | 值 | 中文語感翻譯 | 使用時機 | 行為說明 | |----------|--------------|----------------|------------------------------| | `left` | 清除左浮動 | 有左浮動元素後 | 避免元素與左浮動重疊 | | `right` | 清除右浮動 | 有右浮動元素後 | 避免元素與右浮動重疊 | | `both` ★ | 清除左右 | 最常見 | 元素排在所有浮動元素下方 | | `none` | 不清除 | 預設值 | 無清除效果 | ```css .clearfix::after { content: ''; display: block; clear: both; } ``` --- ### ✨ 負空間屬性區塊(調整元素與邊界之間的距離) #### 🔸 `margin` vs `padding`(外距與內距比較表) 📌 無需搭配其他屬性即可使用,皆為通用型排版工具 | 屬性 | 語感翻譯 | 改變的範圍 | 常見用途 | |------------|----------|------------------------|------------------------| | `margin` | 外距 | 元素與其他元素之間的距離 | 控制區塊之間的間距 | | `padding` | 內距 | 元素內部與內容之間的距離 | 拉開邊框與文字的距離 | --- #### 🔸 語法格式說明 📌 調整邊界距離的寫法,支援四種參數縮寫 📘 單值寫法 → 四邊皆同 📘 雙值寫法 → 上下 / 左右 📘 多值寫法 → 順序為「上 → 右 → 下 → 左」 ```css margin: 16px; /* 四邊皆 16px */ padding: 8px 16px; /* 上下 8px,左右 16px */ ``` --- #### 🔸 `box-sizing`(邊框盒模型設定) 📌 **可單獨使用,也常用於全站初始化設定** | 值 | 中文語感翻譯 | 計算方式 | 行為說明 | |----------------|--------------------|---------------------|--------------------------------------------| | `content-box` | 內容盒(預設) | 只算內容本體 | padding / border 額外增加整體尺寸 | | `border-box` ★ | 邊框盒(常用推薦) | 包含 padding / border | padding / border 不會讓寬高變大,排版更穩定 | 📘 補充說明: - `box-sizing` 決定「距離(padding / border)」是否會影響元素的寬高。 - 預設為 `content-box`,但開發實務上幾乎都會改成 `border-box`。 - 只要有需要設定padding、border的時候就可以直接無腦加上 - 建議在專案初始化階段,於全站預設套用: ```css *, *::before, *::after { box-sizing: border-box; } ``` --- #### 🔸 `visibility`(可見性控制) 📌 **控制元素是否顯示,但不影響其佔位空間** | 值 | 中文語感翻譯 | 是否佔空間 | 行為說明 | | --------- | ------ | ----- | ------------ | | `visible` | 可見(預設) | ✅ 是 | 元素正常顯示 | | `hidden` | 隱藏 | ✅ 是 | 元素不顯示但仍佔排版空間 | 📘 補充說明: * 與 `display: none` 的差異是:**`visibility: hidden` 不會移除版面空間。** * 常用於滑入滑出動畫的前置狀態、SEO 或可存取性優化等情境。 --- #### 🔸 距離單位比較表 📌 常用單位說明,影響 margin、padding、gap 等 | 單位 | 中文語感翻譯 | 是否固定 | 說明 | |-------|--------------------|----------|--------------------------------| | `px` | 固定像素 | ✅ 是 | 固定距離,縮放時比例會變化 | | `rem` | 根字體大小倍數 | ❌ 否 | 彈性單位,1rem 通常等於 16px | | `%` | 百分比 | ❌ 否 | 相對於父元素尺寸 | | `em` | 自身字體大小倍數 | ❌ 否 | 彈性單位,會受內層元素影響 | --- #### 🔸 `gap`(子元素間距) 📌 需搭配 `display: flex` 或 `grid` 使用,常用於控制子元素「之間」的間距(非內距) | 值 | 語感翻譯 | 常見單位 | 行為說明 | |----------|--------------|----------|-----------------------------------| | `20px` | 固定距離 | px | 子元素之間固定 20px 間距 | | `1rem` | 相對距離 | rem | 跟隨字體大小變化,約等於 16px | | `0` | 無間距 | 整數 | 子元素緊貼無間隔 | 📘 補充說明: - `gap` 控制的是「子元素之間」的距離,不會影響整個容器大小。 - 若需針對方向控制,也可以使用: - `row-gap`:只調整上下 - `column-gap`:只調整左右 ## 🧱 三、刻畫面 CSS 必寫屬性 × 分類對照表 ### 🟦 全站通用:版型大骨架用(通常寫在 `body` 或 `.container`) | 分類 | 屬性(含值翻譯) | 用途 | |------|------------------|------| | 排版屬性 | `display: flex(彈性排版)` / `grid(格線排版)` | 建立主排版系統 | | 媒體與響應屬性 | `width: 100%(寬度百分百)` / `max-width: 1200px(最大寬度限制)` | 設定容器寬度限制(RWD 用) | | 負空間屬性 | `margin: 0 auto(上下為 0,左右自動置中)` | 置中外層容器 | | 負空間屬性 | `padding: 20px(內距 20px)` | 撐開內距 | | 媒體與響應屬性 | `box-sizing: border-box(邊框盒模式)` | 寬高包含 padding / border,避免排版爆掉 | | 排版屬性 | `position: relative(相對定位)` | 提供子元素定位基準(absolute 對齊) | | 排版屬性 | `min-height: 100vh(最小高度為 100% 視窗)` | 撐滿畫面高度,避免區塊過短 | ### 🟨 區塊元件(卡片、欄位、區域) | 分類 | 屬性(含值翻譯) | 用途 | |------|------------------|------| | 負空間屬性 | `padding: 16px` | 內距避免內容貼邊 | | 視覺屬性 | `background-color: #eee(背景顏色)` | 測試範圍或區塊底色 | | 視覺屬性 | `border-radius: 8px(圓角)` | 柔化區塊邊緣(美觀) | | 視覺屬性 | `box-shadow: 0 0 10px #ccc(陰影)` | 提升層次感(常見於卡片) | | 排版屬性 | `display: flex / grid` | 區塊內部排版 | | 負空間屬性 | `gap: 12px(間距)` | 區塊內元素之間的距離 | ### 🟩 文字元件(標題、段落、按鈕文字) | 分類 | 屬性(含值翻譯) | 用途 | |------|------------------|------| | 視覺屬性 | `font-size: 16px(字體大小)` | 設定文字基本大小 | | 視覺屬性 | `font-weight: 700(粗體)` | 提升文字權重(標題用) | | 視覺屬性 | `line-height: 1.5(行高)` | 控制文字垂直距離,避免擁擠 | | 視覺屬性 | `color: #333(文字顏色)` | 設定文字閱讀色彩 | | 視覺互動屬性 | `text-align: center / left(文字對齊)` | 決定文字排列位置 | | 負空間屬性 | `margin-bottom: 1em(段落間距)` | 拉開段落或標題與下方距離 | ### 🟥 表單與按鈕元件(含互動) | 分類 | 屬性(含值翻譯) | 用途 | |------|------------------|------| | 視覺屬性 | `background-color: #007bff(背景色)` | 設定按鈕主色調 | | 視覺屬性 | `color: white(文字色)` | 反差顯眼、好辨識 | | 負空間屬性 | `padding: 8px 16px(上下內距 8px、左右 16px)` | 擴大點擊範圍與視覺大小 | | 視覺屬性 | `border-radius: 4px(圓角)` | 圓潤邊緣常見於現代按鈕 | | 視覺互動屬性 | `cursor: pointer(滑鼠指標為可點擊)` | 給使用者互動提示 | | 動畫與轉場屬性 | `transition: 0.3s(0.3 秒過渡動畫)` | 滑入滑出時的柔和動畫 | | 動畫與轉場屬性 | `:hover`(偽類) | 滑鼠移入時變色 / 改變陰影等視覺效果 | ### 🧩 常見實用情境(進階組合技巧) | 分類 | 屬性(含值翻譯) | 用途 | |------|------------------|------| | 排版屬性 | `display: flex` + `justify-content: center(主軸置中)` + `align-items: center(交錯軸置中)` | **中間置中:水平 + 垂直置中** | | 排版屬性 | `position: absolute(絕對定位)` + `top: 0; right: 0` | **右上角貼齊定位** | | 排版屬性 | `object-fit: cover(填滿不變形)` + `width: 100%; height: 100%` | **圖片自適應填滿容器** | | 視覺屬性 | `overflow: hidden(裁切超出內容)` | **避免圖片或內容溢出邊界** | --- ## 🧲 四、排版目標 × 排版工具選擇表 以想要的效果為主導,如果我想要什麼效果,我可以做什麼設定! | 🎯 想要的效果 | ✅ 建議語法 | 📘 常見用途 / 備註 | |------------------|---------------------------|----------------------------| | 區塊水平置中(固定寬度) | `margin: 0 auto;` | 元素需設定 `width` 才會生效 | | 行內元素置中(圖片、icon) | `text-align: center;`(加在父層) | 適用於 `img`、`inline` 元素等 | | 元素平均左右分散 | `display: flex; justify-content: space-between;` | 導覽列、按鈕群等左右貼齊排法 | | 區塊上下左右置中 | `display: flex; justify-content: center; align-items: center;` | 元素完全置中,常見登入卡片 | | 多欄自動排版(RWD) | `display: grid; grid-template-columns: repeat(auto-fit, minmax(...));` | 商品卡片牆、自動換行排法 | | 固定角落位置 | `position: fixed; bottom: 20px; right: 20px;` | 常見於回到頂端按鈕、漂浮功能鍵 | | 元素過多自動換行 | `flex-wrap: wrap;`(配合 `min-width`) | RWD 流動排版用於卡片群組 | | 垂直單列排列 | `display: flex; flex-direction: column;` | 表單欄位上下排、導覽列等 | --- ## 🛠️ 五、屬性加在哪一層? × 控制對象分類說明 ### 🔹 父元素要加的(控制子元素排法) | 屬性名稱 | 屬性值 | 功能說明 | 控制對象 | 補充說明 | |-----------|---------|------------|-------------|--------------| | `display` | `flex / grid` | 建立排版系統 | 控制子元素排法 | 改變子元素排列方式與方向 | | `justify-content` | `space-between / center` | 主軸對齊 | 控制子元素位置 | Flex:水平、Grid:依方向變動 | | `align-items` | `center` | 交錯軸對齊 | 控制子元素位置 | 常見垂直置中,需搭配 `flex` | | `gap` | `20px(或任意間距)` | 間距設定 | 控制子元素之間距離 | 控制子項固定間隔,勝過 `margin` | | `flex-wrap` | `wrap` | 自動換行 | 控制子元素是否換行 | 子元素過多時是否另起一行 | | `align-content` | `center / space-around` | 多行內容對齊方式 | 控制多行群組 | 與 `gap + wrap` 常見搭配,用於 Grid 或多行 Flex | ### 🔵 自己要加的(作用在自己本身) | 屬性名稱 | 屬性值 | 功能說明 | 控制對象 | 補充說明 | |-----------|---------|------------|-------------|--------------| | `margin` | `0 auto` | 自動置中 | 自己 | 常搭配固定寬度達成水平置中 | | `flex` | `1`(或比例) | 彈性放大縮小 | 自己 | Flex 子項間的比例控制 | | `position` | `absolute / fixed` | 定位 | 自己 | 用於貼齊角落、漂浮等需求 | ### 🔸 子元素限定(僅在父層為 flex / grid 時生效) | 屬性名稱 | 屬性值 | 功能說明 | 補充說明 | |-----------|---------|------------|--------------| | `align-self` | `center / flex-end` | 單一子元素個別對齊 | 常見於微調單個欄位、按鈕等位置 | | `order` | `1 / 2 / -1` | 子元素排序 | 控制元素出現順序 | --- ## 🐞 六、常見錯誤 × 排查建議表(錯誤備忘錄) | 錯誤類型 | 常見錯誤寫法 | 原因說明 | 解決建議 | |----------|----------------|------------|------------| | ❌ `margin: 0 auto;` 無效 | 忘記設定寬度 | `auto` 僅在固定寬度下有效 | 加上 `width: 400px` 等設定 | | ❌ `flex` 沒效果 | 子元素無變化 | 父層未加 `display: flex` | 確保外層加上 `display: flex` | | ❌ `gap` 無效 | 在 block 元素使用 | `gap` 只支援 `flex` / `grid` | 改用 `margin` 或加上 `display: flex` | | ❌ `text-align: center;` 無效 | 加在 `img` 自身 | 行內元素需父層對齊 | 將語法加在外層容器 | | ❌ `absolute` 對齊錯誤 | 元素亂飄 | 缺少定位基準 | 父層加上 `position: relative` | | ❌ `flex-direction` 無效 | 垂直沒出現 | 忘記加 `display: flex` | `flex-direction` 需搭配 `flex` 才有作用 | --- ## 🧩 七、排版屬性 × 控制對象 × 值與語感對照 ### 📑 一、快速查表(分類總覽) | 屬性 | 加在哪裡 | 控制誰會排版 | 常見值(★常用) | |------------------|------------------|-------------------------------|-------------------------------------------------------------| | `display` | 父層 | 子元素 | `flex`★, `grid`★, `block`, `inline` | | `justify-content`| 父層 | 子元素(主軸對齊) | `center`★, `space-between`★, `flex-start`, `flex-end` | | `align-items` | 父層 | 子元素(交錯軸對齊) | `center`★, `stretch`★, `flex-start`, `flex-end` | | `gap` | 父層 | 子元素之間的距離 | `20px`★, `1rem`, `0` | | `flex-wrap` | 父層 | 子元素是否換行 | `wrap`★, `nowrap`, `wrap-reverse` | | `align-content` | 父層 | 多行子元素(群組對齊) | `center`, `space-around`, `stretch`★ | | `margin` | 自己 | 自己與外部元素的距離 | `0 auto`★, `16px`, `1em`, `margin-bottom`, `margin-top` | | `padding` | 自己 | 自己的內部空間 | `16px`, `8px 16px` | | `width / max-width` | 自己 | 自己寬度 | `100%`★, `1200px` | | `min-height` | 自己 | 自己最小高度 | `100vh`★, `200px` | | `box-sizing` | 自己 | 自己的盒模型計算模式 | `border-box`★, `content-box` | | `position` | 自己 | 自己的位置與對齊方式 | `relative`★, `absolute`★, `fixed`, `sticky`, `static` | | `overflow` | 自己 | 超出內容的處理方式 | `hidden`★, `scroll`, `auto` | | `object-fit` | 自己(圖片) | 圖片如何填滿容器 | `cover`★, `contain` | | `flex` | 自己(Flex子項) | 子元素佔空間比例 | `1`★, `2`, `0 1 auto` | | `align-self` | 自己 | 覆蓋父層設定,個別對齊 | `center`★, `flex-end`, `stretch` | | `order` | 自己 | 顯示順序 | `0`★, `-1`, `99` | --- ### 📘 二、詳細屬性說明 --- #### 🔸 `text-align`(文字對齊方式) 📌 **作用於文字與行內元素的對齊方式,寫在容器上控制其內容對齊** | 值 | 中文語感翻譯 | 作用對象 | 行為說明 | | ---------- | ------ | ------- | --------------- | | `left` | 靠左對齊 | 行內元素、文字 | 對齊容器左側 | | `center` ★ | 置中對齊 | 行內元素、文字 | 對齊容器中間 | | `right` | 靠右對齊 | 行內元素、文字 | 對齊容器右側 | | `justify` | 左右對齊 | 段落文字 | 文字兩端貼齊,常見於報導或報表 | 📘 補充說明: * 常用於對齊圖片、icon、段落、按鈕等。 * 對 `img` 等行內元素有效,**需寫在其父層容器上。** --- #### 🔹 加在父層 → 控制子元素排法 ##### ✨ display(排版方式) 🔣 語法格式:`display: 顯示模式;` 🔧 功能說明:決定元素的排版型態(是否為彈性容器等) 🎯 控制對象:自己 + 子元素(若為 flex / grid) 💡 常見值: - `block`:區塊元素,自動換行 - `inline`:行內元素,與其他同行不換行 - `flex` ★:彈性容器(可控制主軸與交錯軸) - `grid` ★:格線容器(可指定欄與列) 🧾 適用:`.container`, `.card`(包裹內容的容器) --- ##### ✨ justify-content(主軸對齊) 🔣 `justify-content: 對齊方式;` 🔧 控制子元素在主軸(如水平)的對齊方式 🎯 控制對象:子元素在主軸上的位置 💡 常見值: - `center` ★:置中 - `space-between` ★:兩端貼齊,平均間隔 - `flex-start`:靠主軸起點 - `flex-end`:靠主軸尾端 🧾 適用:`.nav`, `.row`, `.toolbar` --- ##### ✨ align-items(交錯軸對齊) 🔣 `align-items: 對齊方式;` 🔧 控制子元素在交錯軸(如垂直)上的對齊 🎯 控制對象:子元素在交錯軸上的位置 💡 常見值: - `center` ★:垂直置中 - `stretch` ★:撐滿交錯軸高度 - `flex-start`:靠上 - `flex-end`:靠下 🧾 適用:`.row`, `.card-list` --- ##### ✨ gap(子元素間距) 🔣 `gap: 數值;` 🔧 子元素之間的間隔距離(支援 Flex / Grid) 🎯 控制對象:子元素彼此之間的距離 💡 常見值:`20px` ★, `1rem`, `0` 🧾 適用:`.grid-list`, `.row`, `.form-group` --- ##### ✨ flex-wrap(是否換行) 🔣 `flex-wrap: wrap;` 🔧 決定子元素是否超出時自動換行 🎯 控制對象:子元素是否折行顯示 💡 常見值: - `wrap` ★:自動換行 - `nowrap`:不換行(預設) - `wrap-reverse`:反向換行 🧾 適用:`.row`, `.tag-list`, `.card-group` --- ##### ✨ align-content(多行群組對齊) 🔣 `align-content: 對齊方式;` 🔧 控制多行子元素(多排)群組整體對齊方式 🎯 控制對象:多行子元素群組整體位置 💡 常見值: - `center` - `space-around` - `stretch` ★ 🧾 適用:多行 `.card-wrap`, `.item-grid` --- #### 🔸 `place-items` / `place-content`(Grid 縮寫語法) 📌 **僅支援 `display: grid`,可同時設定水平與垂直對齊方式** | 屬性 | 對應長寫 | 語感翻譯 | 用途說明 | | --------------- | ----------------------------------- | ------ | ----------------- | | `place-items` | `align-items` + `justify-items` | 對齊子元素 | 同時控制子項的主軸與交錯軸對齊方式 | | `place-content` | `align-content` + `justify-content` | 對齊多行群組 | 同時控制多行排列的整體對齊方式 | 📘 補充說明: * 類似於 `shorthand`,可簡化 CSS 並提升閱讀性。 * Flex 不支援這組語法。 --- #### 🔵 加在自己 → 控制自己的排版與行為 ##### ✨ margin(外距) 🔣 `margin: 數值;` 或 `margin-left: ...` 🔧 控制元素與外部其他元素的距離 🎯 控制對象:自己的外距空間 💡 常見值: - `0 auto` ★:水平置中(需設定寬度) - `16px`, `1em`, `margin-bottom: 1rem` 🧾 適用:`.card`, `.section`, `.paragraph` --- ##### ✨ padding(內距) 🔣 `padding: 數值;` 或 `padding: 上下 左右` 🔧 控制內容與邊框之間的空間 🎯 控制對象:內部空間(內容不貼邊) 💡 常見值: - `16px`:四邊皆相同 - `8px 16px`:上下 8px,左右 16px 🧾 適用:`.button`, `.input`, `.card` --- ##### ✨ width / max-width(寬度設定) 🔣 `width: 數值;`、`max-width: 數值;` 🔧 控制元素寬度與最大寬度 🎯 控制對象:自身寬度限制 💡 常見值: - `100%` ★:撐滿容器 - `1200px`, `500px`, `80%` 🧾 適用:`.container`, `.content` --- ##### ✨ min-height(最小高度) 🔣 `min-height: 數值;` 🔧 保證元素至少有某個高度 🎯 控制對象:自己高度下限 💡 常見值:`100vh` ★(滿版高度), `200px` 🧾 適用:`.section`, `.wrapper`, `.hero` --- ##### ✨ box-sizing(盒模型) 🔣 `box-sizing: 模式;` 🔧 控制寬高是否包含 padding/border 🎯 控制對象:尺寸計算方式 💡 常見值: - `border-box` ★(推薦,寬高內含 padding) - `content-box`(預設,會加大尺寸) 🧾 適用:通用所有容器建議加 --- ##### ✨ position(定位類型) 🔣 `position: 類型;` 🔧 控制定位模式,決定是否脫離排版流 🎯 控制對象:自身位置與對齊 💡 常見值: - `relative` ★:原地不動,提供基準 - `absolute` ★:自由貼邊、角落定位 - `fixed`:固定在視窗上(不捲動) - `sticky`:滾到時吸附在上方 🧾 適用:`.icon`, `.btn-float`, `.header` --- ##### ✨ overflow(溢出處理) 🔣 `overflow: 處理方式;` 🔧 控制內容溢出時如何顯示 🎯 控制對象:自身超出部分處理邏輯 💡 常見值: - `hidden` ★:裁切不顯示 - `scroll`:強制出現捲軸 - `auto`:自動判斷是否顯示捲軸 🧾 適用:圖片裁切、滾動區域 📘 類別說明補充: > 雖不屬於排版屬性,但常與排版配合,用於控制內容超出時的處理邏輯。可視為「**視覺輔助屬性**」,與 `position`, `object-fit` 等屬性常聯用。 --- ##### ✨ object-fit(圖片填滿) 🔣 `object-fit: 模式;` 🔧 控制圖片在容器內的縮放方式 🎯 控制對象:圖片 or 媒體顯示效果 💡 常見值: - `cover` ★:鋪滿不變形(會裁切) - `contain`:完整顯示不裁切 🧾 適用:`.banner img`, `.thumbnail` --- #### 🔸 子元素限定(需搭配 Flex / Grid) ##### ✨ flex(彈性比例) 🔣 `flex: 數值;` 🔧 控制子元素在彈性排版中佔多少空間 🎯 控制對象:子元素寬度比例(Flex) 💡 常見值: - `1` ★:平均分配 - `2`:雙倍寬 - `0 1 auto`:預設值 🧾 適用:`.col`, `.flex-item` --- ##### ✨ align-self(個別對齊) 🔣 `align-self: 對齊方式;` 🔧 打破父層統一對齊,單獨調整子元素對齊方式 🎯 控制對象:自己(子元素)位置 💡 常見值: - `center` ★:個別垂直置中 - `flex-end`:靠底 - `stretch`:撐滿 🧾 適用:`.item`, `.card`, `.nav-link` --- ##### ✨ order(順序) 🔣 `order: 數字;` 🔧 調整子元素排列順序(不改 HTML) 🎯 控制對象:子元素顯示順序 💡 常見值: - `0` ★(預設) - `-1`(最前) - `99`(最後) 🧾 適用:`.tab`, `.card`, `.action-btn`