Web制作に役立つ!CSS Gridの便利な使い方

CSS

Webサイトのレイアウトを作るとき、CSSの grid はとても強力なツールです。しかし、基本的な grid-template-columns: repeat(3, 1fr); のような使い方だけではなく、 より柔軟で実用的なテクニック を知っておくと、さらに効率的なコーディングが可能になります。

今回は 「コンテンツ幅にピッタリ合わせる方法」「実践的なGridの活用術」 を紹介します!


1. Gridの幅をコンテンツにピッタリ合わせる

デフォルトでは、grid-template-columns: auto auto auto; でカラムの幅がコンテンツサイズに合わせて調整されます。しかし、 親要素が広い場合、意図しない余白ができることもある ため、以下の方法で コンテンツにピッタリ合うグリッド を作ることができます。

1-1. inline-grid を使う

.container {
  display: inline-grid;
  grid-template-columns: auto auto auto;
  gap: 10px;
  background-color: #ddd; /* 背景を付けて確認 */
}

グリッド全体の幅が、カラムの合計幅にピッタリ合う!

display: inline-grid; を指定すると、 コンテナ全体がコンテンツの幅にフィット するようになります。中央寄せしたい場合は margin: 0 auto; を組み合わせるのもおすすめです。

1-2. max-content を使う

.container {
  display: grid;
  grid-template-columns: max-content max-content max-content;
  gap: 10px;
}

各カラムの幅が、そのカラムのコンテンツの最大幅に揃う!

max-content を指定すると、 カラムごとに内容の長さに応じた最適な幅 を適用できます。文章の長さがバラバラなリストなどに便利です。

1-3. fit-content() を使う

.container {
  display: grid;
  grid-template-columns: fit-content(200px) fit-content(200px) fit-content(200px);
  gap: 10px;
}

コンテンツの幅に応じながら、最大幅を制限!

fit-content(200px) を使うと、 コンテンツの幅が200px以下ならそのサイズに、超えたら200pxまでに制限 できます。


2. 実践的なGridの活用テクニック

2-1. minmax() を活用してレスポンシブ対応

.container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
}

画面サイズに応じて、カラム数を自動調整!

minmax(150px, 1fr) を使うことで、カラムが 最小150px・最大フル幅で調整される ので、 ブレイクポイントを明示的に設定しなくても、レスポンシブなレイアウト が作れます。

2-2. subgrid で高さを統一する

.parent {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.child {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 1;
}

子要素(.child)が親グリッド(.parent)の行設定を継承!

subgrid を使うことで、同じ行の高さを統一する ことができます。これは、カードデザインなどで高さを揃えたいときに非常に便利 です。

subgridFirefoxでは完全対応 していますが、ChromeやSafariではまだ対応が進行中なので、flexbox での代替も考慮しましょう。

2-3. grid-auto-flow: dense; で自動的に詰める

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-flow: dense;
}

.item:nth-child(2) {
  grid-column: span 2;
}

隙間を自動で詰めて、無駄なくレイアウト!

grid-auto-flow: dense; を使うと、空いたスペースに自動で要素が詰め込まれる ようになります。特に、 サイズが異なるカードを並べるときに便利 です。

詳細は別記事にまとめました。


3. まとめ

CSS Gridはとても強力ですが、 便利なプロパティを活用すると、さらに柔軟なレイアウトが可能 になります。

🔹 今日のポイント

inline-grid でグリッド幅をコンテンツにフィットさせる
max-contentfit-content() でコンテンツサイズに合わせる
minmax() を使うとレスポンシブが簡単
subgrid で高さを統一(※Chrome未対応)
grid-auto-flow: dense; で隙間をなくす

こういったテクニックを駆使すれば、 コーディングの効率がアップし、より美しく使いやすいレイアウト を作れます!

ぜひ、実際のWeb制作に取り入れてみてくださいね!✨

コメント

タイトルとURLをコピーしました