CodeGym /課程 /Frontend SELF TW /建立 Grid 容器

建立 Grid 容器

Frontend SELF TW
等級 27 , 課堂 1
開放

2.1 屬性 display: grid

CSS Grid Layout 是一個強大的佈局系統,讓你可以用行和列來創建複雜的網頁佈局。使用 CSS Grid 的主要步驟就是建立一個 Grid 容器。下面我們來看看如何使用屬性 display: grid 來創建一個 Grid 容器並管理其基本的面向。

建立 Grid 容器的基本概念

屬性 display: grid

屬性 display: grid 將一個元素定義為 Grid 容器。這是個基本步驟,讓你可以利用 CSS Grid 的所有功能來佈局元素。

例子:

CSS
    
      .grid-container {
        display: grid;
      }
    
  

Grid 容器的基本元素

使用屬性 display: grid 定義 Grid 容器後,所有這個容器的子元素會自動成為 grid 元素。這樣就可以控制它們在容器內的排列和對齊。

例子:

CSS
    
      .grid-container {
        display: grid;
        border: 2px solid #000;
      }

      .grid-item {
        background-color: #3498db;
        color: white;
        padding: 20px;
        border: 1px solid #fff;
        text-align: center;
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Grid 容器範例</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <div class="grid-container">
            <div class="grid-item">元素 1</div>
            <div class="grid-item">元素 2</div>
            <div class="grid-item">元素 3</div>
          </div>
        </body>
      </html>
    
  

代碼解釋:

  • .grid-container: 使用屬性 display: grid定義元素為 Grid 容器。還有添加邊框來使容器視覺上更加突出。
  • .grid-item: 定義 Grid 容器內元素的基本樣式,比如背景色、文字顏色、填充、邊框和文字居中。

2.2 嵌套的 Grid 容器

CSS Grid 的一大優勢之一就是可以創建嵌套的 Grid 容器。這允許你創建複雜的佈局,其中一個 grid 元素可以成為其子元素的 grid 容器。

例子:

CSS
    
      .grid-container {
        display: grid;
        gap: 10px;
        border: 2px solid #000;
      }

      .grid-item {
        background-color: #3498db;
        color: white;
        padding: 20px;
        border: 1px solid #fff;
        text-align: center;
      }

      .nested-grid-container {
        display: grid;
        gap: 5px;
        background-color: #2980b9;
        padding: 10px;
      }

      .nested-grid-item {
        background-color: #1abc9c;
        padding: 10px;
        border: 1px solid #fff;
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>嵌套 Grid 容器</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <div class="grid-container">
            <div class="grid-item">元素 1</div>
            <div class="grid-item">
              <div class="nested-grid-container">
                <div class="nested-grid-item">嵌套元素 1</div>
                <div class="nested-grid-item">嵌套元素 2</div>
              </div>
            </div>
            <div class="grid-item">元素 3</div>
          </div>
        </body>
      </html>
    
  

代碼解釋:

  • .nested-grid-container: 使用屬性 display: grid定義嵌套的 Grid 容器, 並且添加元素之間的間隙(gap: 5px)和內部填充(padding: 10px)。
  • .nested-grid-item: 定義嵌套 Grid 容器內元素的基本樣式,比如背景色、填充和邊框。

2.3 管理 Grid 容器的行為

屬性 display: grid 也可以用來使用額外的屬性來管理 Grid 容器的行為。例如,屬性 grid-auto-flow 可以控制元素的自動排列。

例子:

CSS
    
      .grid-container {
        display: grid;
        grid-auto-flow: row;
        gap: 10px;
        border: 2px solid #000;
      }

      .grid-item {
        background-color: #3498db;
        color: white;
        padding: 20px;
        border: 1px solid #fff;
        text-align: center;
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>具有 auto-flow 的 Grid 容器</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <div class="grid-container">
            <div class="grid-item">元素 1</div>
            <div class="grid-item">元素 2</div>
            <div class="grid-item">元素 3</div>
            <div class="grid-item">元素 4</div>
            <div class="grid-item">元素 5</div>
          </div>
        </body>
      </html>
    
  

2.4 在 Grid 容器內使用 Flexbox

在某些情況下,在 grid 元素中使用 Flexbox 可以幫助建立更複雜的佈局。這允許你結合這兩種技術的優勢。

CSS
    
      .grid-container {
        display: grid;
        gap: 10px;
        border: 2px solid #000;
      }

      .grid-item {
        background-color: #3498db;
        color: white;
        padding: 20px;
        border: 1px solid #fff;
        text-align: center;
      }

      .flex-container {
        display: flex;
        gap: 10px;
      }

      .flex-item {
        background-color: #1abc9c;
        padding: 10px;
        flex: 1;
        text-align: center;
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Grid 容器內的 Flexbox</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <div class="grid-container">
            <div class="grid-item flex-container">
              <div class="flex-item">Flex 元素 1</div>
              <div class="flex-item">Flex 元素 2</div>
            </div>
            <div class="grid-item">元素 2</div>
            <div class="grid-item">元素 3</div>
          </div>
        </body>
      </html>
    
  

代碼解釋:

  • .flex-container: 使用屬性 display: flex 定義 grid 元素為 flex 容器。
  • .flex-item: 定義 flex 容器內元素的基本樣式,比如背景色、填充和彈性(flex: 1)。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION