文章

佈局基礎

佈局基礎

CSS 佈局基礎涉及到如何排列和定位網頁上的元素。掌握 CSS 佈局是創建響應式和易於使用的網頁設計的重要技能。以下是 CSS 佈局的幾個關鍵概念和技術,包括 標準文檔流浮動(float)清除(clear)定位(position)FlexboxGrid 等現代佈局工具。

1. 標準文檔流

在默認情況下,HTML 元素遵循 標準文檔流(normal document flow) 進行排列:

  • 塊級元素(block-level elements)(如 <div><p><h1> 等):在頁面上佔據整個可用寬度,並在每個元素之前和之後都有換行。
  • 行內元素(inline elements)(如 <span><a><strong> 等):只佔據其內容的寬度,並與相鄰的行內元素共享同一行。

2. 浮動(Float)

浮動(float) 用於將元素從標準文檔流中移出,並使其向左或向右對齊,通常用於創建多欄佈局或環繞文本效果。

  • 語法
    1
    
    float: left | right | none;
    
  • 值的說明
    • left:將元素向左浮動。
    • right:將元素向右浮動。
    • none:默認值,不使用浮動。
  • 範例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    .sidebar {
        width: 30%;
        float: left; /* 將側邊欄向左浮動 */
    }
    
    .content {
        width: 70%;
        float: right; /* 將主內容向右浮動 */
    }
    

3. 清除浮動(Clear)

當使用浮動元素時,非浮動元素可能會圍繞浮動元素流動,這會導致佈局錯亂。清除(clear) 屬性用於停止元素旁邊的浮動元素,使其下方內容不受浮動元素的影響。

  • 語法
    1
    
    clear: left | right | both | none;
    
  • 值的說明
    • left:清除左側浮動。
    • right:清除右側浮動。
    • both:清除兩側浮動。
    • none:不清除浮動(默認值)。
  • 範例
    1
    2
    3
    
    .clearfix {
        clear: both; /* 清除左右兩側的浮動 */
    }
    

4. 定位(Position)

定位(position) 屬性允許我們精確地控制元素的位置。CSS 提供了多種定位方法,如 靜態(static)相對(relative)絕對(absolute)固定(fixed)粘性(sticky)

  • 語法
    1
    
    position: static | relative | absolute | fixed | sticky;
    
  • 值的說明
    • static:默認值,按標準文檔流排列。
    • relative:相對於元素在標準文檔流中的位置進行定位。
    • absolute:相對於最近的定位祖先元素進行定位,若無則相對於 <html>
    • fixed:相對於瀏覽器窗口進行定位。
    • sticky:元素在特定條件下變得固定(例如當滾動到特定位置時)。
  • 範例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    .relative-box {
        position: relative;
        top: 20px; /* 相對於其標準位置向下移動20px */
    }
    
    .absolute-box {
        position: absolute;
        top: 50px;
        left: 100px; /* 相對於最近的定位祖先元素進行定位 */
    }
    
    .fixed-box {
        position: fixed;
        bottom: 10px;
        right: 20px; /* 固定在窗口的右下角 */
    }
    

5. Flexbox 佈局

Flexbox(Flexible Box Layout) 是一種適用於單一方向(行或列)的佈局模型,能夠更輕鬆地排列和對齊元素,特別是在創建響應式佈局時非常有用。

  • 主要屬性
    • display: flex:將父容器設置為彈性容器。
    • flex-direction:設置主軸方向(默認為 row)。
    • justify-content:設置主軸上的子元素對齊方式(如 flex-startcenterspace-between)。
    • align-items:設置交叉軸上的子元素對齊方式(如 flex-startcenterstretch)。
  • 範例
    1
    2
    3
    4
    5
    6
    
    .flex-container {
        display: flex; /* 設置為彈性容器 */
        flex-direction: row; /* 子元素排列為水平方向 */
        justify-content: space-between; /* 子元素之間均勻分布 */
        align-items: center; /* 子元素在交叉軸上居中對齊 */
    }
    

6. Grid 佈局

Grid Layout 是另一種強大的 CSS 佈局工具,用於創建二維佈局,允許更複雜的行列設計。

  • 主要屬性
    • display: grid:將父容器設置為網格容器。
    • grid-template-columns:定義列的數量和寬度。
    • grid-template-rows:定義行的數量和高度。
    • gap:設置網格之間的間距。
    • grid-columngrid-row:設置子元素的網格位置。
  • 範例
    1
    2
    3
    4
    5
    6
    
    .grid-container {
        display: grid; /* 設置為網格容器 */
        grid-template-columns: 1fr 2fr; /* 定義兩列,第一列佔1份空間,第二列佔2份空間 */
        grid-template-rows: 100px auto; /* 定義兩行,第一行高100px,第二行自動填充 */
        gap: 20px; /* 行列之間的間距為20px */
    }
    

7. 小結

掌握 CSS 佈局技術是設計響應式和美觀的網頁的關鍵。使用 FloatClear 來創建簡單的佈局,利用 Position 精確控制元素位置,並運用現代的 FlexboxGrid 佈局工具來創建更靈活和複雜的佈局設計。熟悉這些技術將有助於創建符合需求的網頁佈局。

本文章以 CC BY 4.0 授權