前回は、Grid レイアウトでコンテンツを自由に配置する方法を紹介しました。

今回は、Grid レイアウトで作成したコンテンツの中に、さらに Grid レイアウトでコンテンツを作成してみます。

基本のコードは、以下になります。

<body>
  <div class="container">
    <div class="item item-1">
      <div class="item-1--a">a</div>
      <div class="item-1--b">b</div>
      <div class="item-1--c">c</div>
      <div class="item-1--d">d</div>
    </div>
    <div class="item item-2">2</div>
    <div class="item item-3">3</div>
    <div class="item item-4">4</div>
    <div class="item item-5">5</div>
    <div class="item item-6">6</div>
  </div>
</body>
.container {
  background-color: #eee;
  max-width: 48rem;
  height: 20rem;
  border: 1px solid #000;
  display: grid;
  grid-template-columns: auto 5rem 5rem;
  grid-template-rows: auto 5rem;
}

.item {
  padding: 1rem;
  text-align: center;
  color: white;
}

.item-1 {
  background-color: darkgreen;
}

.item-1 div {
  background-color: cyan;
  color: black;
  border: 1px solid black;
}

.item-2 {
  background-color: darkgrey;
}

.item-3 {
  background-color: darkkhaki;
}

.item-4 {
  background-color: darkslateblue;
}

.item-5 {
  background-color: darkgoldenrod;
}

.item-6 {
  background-color: darkred;
}

左上のコンテンツに、a から d までのコンテンツが入っている状態です。

a から d までのコンテンツを Grid レイアウトで配置してみます。

対象となるのは、左上のコンテンツなので、item-1 のクラスにdisplay:grid;を指定します。

例えば 2 列にするには、grid-template-columns: repeat(2, 1fr);を指定します。

.item-1 {
  background-color: darkgreen;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
}

ブラウザで確認すると、

image2

Grid レイアウトが入れ子の状態になりました。

入れ子になったコンテンツを自由に配置してみましょう。

Grid レイアウトを 3 行 3 列にしてみます。

.item-1 {
  background-color: darkgreen;
  display: grid;
  z
  grid-template-rows: repeat(3, 1fr);
}

image3

a を右上に移動してみます。

.item-1--a {
  grid-column: 3/4;
  grid-row: 1/3;
}

ブラウザで確認すると、

image4

右上に移動しました。

他のコンテンツも移動してみます。

.item-1--b {
  grid-column: 1/3;
  grid-row: 1/2;
}

.item-1--c {
  grid-column: 3/4;
  grid-row: 3/4;
}

.item-1--d {
  grid-column: 1/3;
  grid-row: 2/4;
}

ブラウザで確認すると、

image5

コンテンツが自由に移動できました。

自由にレイアウトが作成できるようになるので、ぜひ使ってみてください。

ブログ一覧