36
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【CSS】CSS Grid Layoutの新機能「サブグリッド」の使い方 - CSS Grid

Last updated at Posted at 2022-06-02

概要

今まで、Firefoxでしか実装されていなかった、
CSS Grid Layoutの新機能「サブグリッド」が、Interop 2022の取り組みによって、
主要ブラウザすべてで、サポートされようとしています。

それに伴い、CSS Grid Layoutの新機能「サブグリッド」の使い方についてまとめました。

サブグリッド subgrid

サブグリッド subgrid とは、CSS Grid Layoutの新機能になります。
そのため、サブグリッドの説明する前に、CSS Grid Layoutについて復習しましょう。

CSS Grid Layoutとは?

CSS Grid Layoutは、列と行を定義することで、
水平線と垂直線が交差したレイアウト(グリッド)をCSSで表現したものになります。

親要素にdisplay: grid;を記載することで下の画像のように
親要素をグリットコンテナーとして、子要素をグリットアイテムとして扱うことができます。
image.png

※ CSS Grid Layoutの詳しい使い方については、↑こちらの記事で詳しく解説しています。ご覧ください。

サブグリッド subgridとは?

では、早速サブグリッドについて解説していきます。

サブグリッドとは、
グリッドアイテムに display: grid; を指定して、
grid-template-columns: subgrid;を指定することで、
グリットアイテム/サブグリットコンテナーの列をグリットコンテナーの列に合わせることができ、

grid-template-rows: subgrid;を指定することで、
グリットアイテム/サブグリットコンテナーの行をグリットコンテナーの行に合わせることができる
機能です。

サブグリットを使うことで、グリットアイテムの子要素(サブグリットアイテム)の大きさを合わせることができます。

image1.png
サブグリット使ってない
image2.png
サブグリット使ってる

使い方

サンプル

See the Pen Untitled by でぐぅー | Qiita (@sp_degu) on CodePen.

※ Firefoxでご確認ください。

Firefoxのでの様子はこちらからご覧いただけます。

実装方法

HTML

<div class="container">
  <div class="item">
    <p class="subItem">吾輩は猫である</p>
    <p class="subItem">...</p>
    <p class="subItem">...</p>
  </div>
  <div class="item">
    <p class="subItem">羅生門</p>
    <p class="subItem">...</p>
    <p class="subItem">...</p>
  </div>
  <div class="item">
    <p class="subItem">記憶に残る正月の思い出</p>
    <p class="subItem">...</p>
    <p class="subItem">...</p>
  </div>
</div>

CSS

.container {
  display: grid;
  grid-template-columns: repeat(3, 200px);
  gap: 8px 24px;
}

.item {
  /*グリットアイテムを3グリット分の大きさにする*/
  grid-row: span 3;
  /*サブグリットの指定*/
  display: grid;
  grid-template-rows: subgrid;
}
サブグリットに関係のないCSSはこちら
.container {
  background-color: #F9FAFA;
  border: 1px solid rgba(0, 0, 0, 0.12);
  padding: 16px;
}

.item {
  background-color: #E3F7DF;
  border: 1px solid #55c500;
  padding: 16px;
}

.subItem {
  background-color: #FCF0BF;
  border: 1px solid #F7A535;
  padding: 8px;
  margin: 0;
}

グリットアイテム / サブグリットコンテナーgrid-template-rows: subgrid; を記載することで、
サブグリットアイテムがグリットコンテナーのに合い、gap の値も引き継ぎます。

サンプルの場合では、サブグリットアイテム間の余白は、グリットコンテナーで gap: 8px 24px; と指定しているため、8pxになります。

同様に、グリットアイテム / サブグリットコンテナーgrid-template-column: subgrid; を記載することで、
サブグリットアイテムがグリットコンテナーのに合います。

ブラウザーの互換性

2022/6/2現在はまだ、Firefoxのみで、まだまだ、実務では使えないですが、
Interop 2022の取り組みによって、主要ブラウザで、サポートされようとしています。
そのため、実務で使えるのは間近です。

        Data on support for the css-subgrid feature across the major browsers from caniuse.com

まとめ

この記事は、CSS Grid Layoutの新機能「サブグリッド」の基本的な使い方をまとめました。

サブグリットを使うことで、FlexやGridだけでは実現が難しかった、めんどくさかったレイアウトを簡単に実装できるようになります。

しかし、2022/6/2現在ではまだ、Firefoxのみでしか使えないため、まだまだ、実務では使えないですが、
Interop 2022の取り組みによって、今後、主要ブラウザでサポートされます。

今後よく使っていくであろう、サブグリットを今のうちから理解して、使えるようになった時に、すぐ使えるように準備しておきたいですね。


最後まで読んでくださってありがとうございます!

普段はデザインやフロントエンドを中心にQiitaに記事を投稿しているので、ぜひQiitaのフォローとX(Twitter)のフォローをお願いします。

36
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?