元素布局

Frontend SELF ZH
第 27 级 , 课程 3
可用

4.1 grid-column 属性

CSS Grid Layout 提供了一些很棒的工具来管理元素在网格中的布局。主要工具之一就是 grid-rowgrid-column 属性。这些属性允许开发者精确指定 grid 元素应该占据哪些行和列,从而能灵活且准确地控制布局。

grid-column 属性定义了元素在 grid 容器中占据哪些列。

语法:

    
      .grid-item {
        grid-column: start / end;
      }
    
  

其中:

  • start: 网格的起始线
  • end: 网格的结束线

例子 1: 在特定列中布置元素

在这个例子中,元素会被放置在网格的第二和第三条线之间,占据第二列:

CSS
    
      .grid-item {
        grid-column: 2 / 3; /* 元素占据网格的第二和第三条线之间的空间 */
      }
    
  

例子 2: 占据多列的元素

在这个例子中,元素会占据三列,从网格的第一条线开始,到第四条线结束:

CSS
    
      .grid-item {
        grid-column: 1 / 4; /* 元素占据从第一到第四条线的空间 */
      }
    
  

例子 3: 使用 span 覆盖多个列

在这个例子中,元素将从当前位置开始,占据两列:

CSS
    
      .grid-item {
        grid-column: span 2; /* 元素从当前位置开始占据两列 */
      }
    
  

4.2 grid-row 属性

grid-row 属性定义了元素在 grid 容器中占据哪些行。

语法:

    
      .grid-item {
        grid-row: start / end;
      }
    
  

其中:

  • start: 网格的起始线
  • end: 网格的结束线

例子 1: 在特定行中布置元素

在这个例子中,元素会被放置在网格的第一和第二条线之间,占据第一行:

CSS
    
      .grid-item {
        grid-row: 1 / 2; /* 元素占据网格的第一和第二条线之间的空间 */
      }
    
  

例子 2: 占据多行的元素

在这个例子中,元素会占据两行,从网格的第二条线开始,到第四条线结束:

CSS
    
      .grid-item {
        grid-row: 2 / 4; /* 元素占据从第二到第四条线的空间 */
      }
    
  

例子 3: 使用 span 覆盖多行

在这个例子中,元素将从当前位置开始,占据三行:

CSS
    
      .grid-item {
        grid-row: span 3; /* 元素从当前位置开始占据三行 */
      }
    
  

例子 4: 使用负值

CSS
    
      .element {
        grid-row: 1 / -1; /* 元素从第一条线开始,到最后一条线结束 */
      }
    
  

4.3 组合使用 grid-row 和 grid-column 属性

要创建更复杂的布局,可以组合使用 grid-rowgrid-column 属性,以精确控制元素的布置。

例子: 使用 grid-row 和 grid-column 的复杂布局

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Grid Row and Column Example</title>
          <style>
            .container {
              display: grid;
              grid-template-columns: repeat(4, 1fr);
              grid-template-rows: repeat(4, 100px);
              gap: 10px;
            }

            .item1 {
              background-color: lightblue;
              grid-row: 1 / 3; /* 元素占据第一和第二行 */
              grid-column: 1 / 3; /* 元素占据第一和第二列 */
            }

            .item2 {
              background-color: lightgreen;
              grid-row: 3 / 5; /* 元素占据第三和第四行 */
              grid-column: 2 / 5; /* 元素占据第二、第三和第四列 */
            }

            .item3 {
              background-color: lightcoral;
              grid-row: 1 / 2; /* 元素占据第一行 */
              grid-column: 3 / 5; /* 元素占据第三和第四列 */
            }
          </style>
        </head>
        <body>
          <div class="container">
            <div class="item1">Item 1</div>
            <div class="item2">Item 2</div>
            <div class="item3">Item 3</div>
          </div>
        </body>
      </html>
    
  

说明:

  • 容器 .container 有四行和四列,每个元素占据相等的空间
  • 元素 .item1 占据前两行和前两列
  • 元素 .item2 占据第三和第四行以及第二、第三和第四列
  • 元素 .item3 占据第一行及第三和第四列
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION