自動配置

Frontend SELF JA
レベル 27 , レッスン 4
使用可能

5.1 プロパティ grid-auto-rows

CSS Grid Layoutは、グリッド内の要素を自動配置するための素晴らしいツールを提供してるよ。 grid-auto-rows, grid-auto-columnsgrid-auto-flow のプロパティは、グリッドに明示的に配置されていない要素の挙動を管理するのに役立つんだ。これらのプロパティについて詳しく見ていこう。

grid-auto-rows プロパティは、要素が明示的に指定された行を超えたときに、自動的に追加される行の高さを決定するよ。

構文:

    
      .grid-container {
        grid-auto-rows: value;
      }
    
  

この場合:

  • value: 自動的に追加される行の高さ。いろいろな単位で指定できるよ (px, %, fr, auto など)

例 1: 固定行の高さ

この例では、自動的に追加されるすべての行が固定の高さ 100px を持つよ:

CSS
    
      .grid-container {
        display: grid;
        grid-template-columns: repeat(3, 1fr); /* 3つの等しい幅の列 */
        grid-auto-rows: 100px; /* 自動的に追加される行は高さ100px */
      }
    
  

例 2: 柔軟な行の高さ

この例では、自動的に追加される行は最小の高さ 100px を持ち、必要に応じて増加するよ:

CSS
    
      .grid-container {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-rows: minmax(100px, auto); /* 行の最小高さは100pxで、自動で増加可 */
      }
    
  

5.2 プロパティ grid-auto-columns

grid-auto-columns プロパティは、要素が明示的に指定された列を超えたときに、自動的に追加される列の幅を決定するよ。

構文:

    
      .grid-container {
        grid-auto-columns: value;
      }
    
  

この場合:

  • value: 自動的に追加される列の幅。いろいろな単位で指定できるよ (px, %, fr, auto など)

例 1: 固定列の幅

この例では、自動的に追加されるすべての列が固定の幅 100px を持つよ:

CSS
    
      .grid-container {
        display: grid;
        grid-template-rows: repeat(3, 100px); /* 3つの固定高さの行 */
        grid-auto-columns: 100px; /* 自動的に追加される列は幅100px */
      }
    
  

例 2: 柔軟な列の幅

この例では、自動的に追加される列は最小の幅 100px を持ち、自由スペースの一部まで増加することができるんだ:

CSS
    
      .grid-container {
        display: grid;
        grid-template-rows: repeat(3, 100px);
        grid-auto-columns: minmax(100px, 1fr); /* 列の最小幅は100pxで、自由スペースの一部まで増加可 */
      }
    
  

5.3 プロパティ grid-auto-flow

grid-auto-flow プロパティは、grid-rowgrid-column で明示的に指定されていない要素を、どのようにグリッド内へ自動配置するかを決定するよ。

構文:

    
      .grid-container {
        grid-auto-flow: value;
      }
    
  

この場合:

value: 要素の配置順序を決定する値。可能な値は:

  • row (デフォルト): 要素は行ごとに配置される
  • column: 要素は列ごとに配置される
  • dense: 詰め込み配置、空のセルを残さない(row または column と一緒に使われる)

例 1: 行ごとの配置

この例では、要素は行ごとに配置され、一つずつ行を埋めるよ:

CSS
    
      .grid-container {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-flow: row; /* 要素は行ごとに配置される */
      }
    
  

例 2: 列ごとの配置

この例では、要素は列ごとに配置され、一つずつ列を埋めるよ:

CSS
    
      .grid-container {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-flow: column; /* 要素は列ごとに配置される */
      }
    
  

例 3: 詰め込み配置

この例では、要素は詰め込み配置され、空のセルを最小化するよ:

CSS
    
      .grid-container {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-flow: row dense; /* 詰め込み配置で要素を行ごとに配置 */
      }
    
  

5.4 フル実装の例

CSS
    
      .grid-container {
        display: grid;
        grid-template-columns: repeat(3, 1fr); /* 3つの等しい幅の列 */
        grid-auto-rows: 100px; /* 自動的に追加される行は高さ100px */
        grid-auto-flow: row dense; /* 詰め込み配置で要素を行ごとに配置 */
        gap: 10px;
      }

      .grid-item {
        background-color: #3498db;
        color: white;
        padding: 20px;
        text-align: center;
        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>CSS 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 class="grid-item">アイテム6</div>
          </div>
        </body>
      </html>
    
  

コードの説明:

  • .grid-container: 同じ幅の3つの列と高さ 100px の自動行を持つGridコンテナを作成するよ。 要素は詰め込み配置で行ごとに配置される
  • .grid-item: グリッドアイテムの基本スタイルを定義するよ、背景色やテキストの色、余白、テキストセンタリング、ボーダーなんかが含まれる
1
Опрос
CSS Gridの基本,  27 уровень,  4 лекция
недоступен
CSS Gridの基本
CSS Gridの基本
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION