CSSグリッド完全解説!auto-fitとauto-fillの違いとレスポンシブ設計での正しい使い分け
生徒
「CSSグリッドでauto-fitとauto-fillって出てきましたが、何が違うんですか?」
先生
「どちらも画面サイズに合わせてレイアウトを変える仕組みですが、考え方が少し違います」
生徒
「名前が似ていて混乱します…」
先生
「棚に箱を並べるイメージで考えると、とても分かりやすくなりますよ」
1. auto-fitとauto-fillが使われる理由
CSSグリッドレイアウトでは、画面の横幅に応じて要素の並び方を自動で変えることができます。 スマートフォン、タブレット、パソコンなど、画面サイズが違っても見やすくする設計を レスポンシブデザインと呼びます。
auto-fitとauto-fillは、そのレスポンシブデザインを簡単に実現するための指定方法です。 特にカード一覧や商品一覧など、数が変わる要素でよく使われます。
2. repeatとminmaxの基本的な考え方
auto-fitとauto-fillは、repeatとminmaxと一緒に使われることがほとんどです。 repeatは同じ幅の列を繰り返し作る指定で、minmaxは最小幅と最大幅を決める考え方です。
難しく聞こえますが、「最低これくらいの大きさで、余ったら広がっていい」 という指定だと思ってください。
<style>
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 10px;
}
.item {
background: lightblue;
padding: 20px;
}
</style>
<div class="container">
<div class="item">BOX1</div>
<div class="item">BOX2</div>
<div class="item">BOX3</div>
</div>
ブラウザ表示
3. auto-fillの特徴と動き
auto-fillは、箱を並べるための「場所」を優先して確保します。 中身が少なくても、置けるスペースがあれば空の枠を残します。
たとえるなら、スーパーの棚に商品が少なくても、棚そのものは消えない状態です。 レイアウトの形を安定させたい場合に向いています。
<style>
.grid-fill {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 8px;
}
.box {
background: lightgreen;
padding: 15px;
}
</style>
<div class="grid-fill">
<div class="box">A</div>
<div class="box">B</div>
</div>
ブラウザ表示
4. auto-fitの特徴と動き
auto-fitは、中身のある箱だけを使ってレイアウトを広げます。 空いている枠があっても、自動的に詰めて広がるのが特徴です。
こちらは、棚の商品が少ないときに、商品同士の間隔が広がるイメージです。 画面いっぱいに要素を広げたいときに便利です。
<style>
.grid-fit {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 8px;
}
.card {
background: pink;
padding: 15px;
}
</style>
<div class="grid-fit">
<div class="card">1</div>
<div class="card">2</div>
</div>
ブラウザ表示
5. レスポンシブ設計での使い分け
auto-fillは列の形を保ちたい一覧表や管理画面に向いています。 auto-fitはカード型デザインや画像ギャラリーなど、余白を減らしたい場面で活躍します。
どちらが正解というより、「見せたい形」によって選ぶことが大切です。
6. 初心者が混乱しやすいポイント
auto-fitとauto-fillは見た目が似ているため、違いに気づきにくいです。 要素の数を減らしたり、画面幅を大きく変えたりすると挙動の差が分かりやすくなります。
最初は実際にブラウザの幅を動かしながら確認することが理解への近道です。
まとめ
今回の記事では、CSSグリッドレイアウト(CSS Grid Layout)の核心とも言える「auto-fit」と「auto-fill」の違い、そして実務での使い分けについて詳しく解説してきました。Web制作の現場では、パソコン、タブレット、スマートフォンといった多種多様なデバイスに対応するレスポンシブ設計が欠かせません。以前はメディアクエリ(Media Queries)を駆使して、画面幅ごとに「ここからは2列」「ここからは3列」と細かく指定していましたが、CSSグリッドのrepeat関数とminmax関数を組み合わせることで、たった1行のコードで自動的なレイアウト調整が可能になりました。
あらためて両者の決定的な違いを整理すると、キーワードは「余ったスペースの扱い」にあります。auto-fill(オートフィル)は、その名の通りスペースを「埋める(fill)」ことを優先します。子要素が少なくて横幅に余裕がある場合でも、見えない「空の列」を維持し続けるため、要素が左側に寄った安定したレイアウトを保つことができます。
一方で、auto-fit(オートフィット)は、存在する要素を画面幅に「適合(fit)」させます。空の列は幅が0pxとして扱われ、中身のある要素だけが残りのスペースを分け合って横いっぱいに広がります。これにより、画像ギャラリーや記事カードの一覧などで、画面の端まで美しく要素が詰まったモダンなデザインを簡単に作ることができるのです。
プログラミング初学者の方がCSSを学習する際、こうした似たような名前のプロパティに戸惑うことは少なくありません。しかし、本記事の「棚と箱」の例えのように、視覚的なイメージを持つことで、コードの背後にある論理的な動きを理解しやすくなります。最新のブラウザ環境ではCSSグリッドのサポートが非常に充実しているため、これからのフロントエンド開発において「auto-fit」と「auto-fill」をマスターすることは、コーディングの効率を劇的に向上させる強力な武器となるでしょう。
実践:商品一覧ページを想定したグリッドレイアウトの比較
実際の開発シーンを想定して、商品カードが少ない場合にどのような表示の差が出るか、比較コードで確認してみましょう。同じminmax(200px, 1fr)という条件でも、キーワード一つで印象が大きく変わります。
<style>
/* 共通スタイル */
.comparison-grid {
display: grid;
gap: 15px;
background-color: #f8f9fa;
padding: 15px;
margin-bottom: 20px;
border: 1px solid #dee2e6;
}
.product-card {
background-color: #ffffff;
border: 2px solid #0d6efd;
border-radius: 8px;
padding: 10px;
text-align: center;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.label {
font-weight: bold;
margin-bottom: 5px;
}
/* fillの指定 */
.fill-demo {
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
/* fitの指定 */
.fit-demo {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
</style>
<div class="label"><i class="bi bi-grid-3x3-gap me-2"></i>auto-fill(空のスペースを維持する)</div>
<div class="comparison-grid fill-demo">
<div class="product-card">商品A</div>
<div class="product-card">商品B</div>
</div>
<div class="label"><i class="bi bi-aspect-ratio me-2"></i>auto-fit(要素を横いっぱいに広げる)</div>
<div class="comparison-grid fit-demo">
<div class="product-card">商品A</div>
<div class="product-card">商品B</div>
</div>
ブラウザ表示
上のサンプルを見ると、ブラウザの幅が広い環境では「auto-fill」はカードが左側に並び、右側に空のスペースが確保されます。対して「auto-fit」は、2つのカードが画面を半分ずつ分け合うように自動で拡大されます。これがレスポンシブデザインにおける「柔軟性」の正体です。
SEO効果を最大化するコーディングのコツ
モダンなCSSグリッドを使用することは、SEO(検索エンジン最適化)の観点からもメリットがあります。従来のフロート(float)や複雑なネスト(入れ子)構造を使ったレイアウトに比べ、CSSグリッドはHTMLの構造をシンプルかつセマンティック(意味的)に保つことができます。
検索エンジンのクローラーは、シンプルで整理されたソースコードを好みます。余計なdivタグを減らし、CSSで見た目を制御することで、ページの読み込み速度(ページスピード)の向上にも繋がり、Googleのコアウェブバイタル(Core Web Vitals)のスコア改善が期待できます。また、レスポンシブデザインが完璧に整っているサイトは、モバイルフレンドリーとして高く評価されるため、今回学んだauto-fitやauto-fillを適切に使い分けることは、結果として検索順位の安定にも寄与するのです。
生徒
先生、ありがとうございました!実際のブラウザ表示で見比べると、auto-fillとauto-fitの挙動が全然違いますね。特にauto-fitが、要素が少ないときにグイッと広がるのが見ていて気持ちいいです!
先生
そうでしょう。特に「商品が1つしかない時に画面の端っこに小さく表示されるのが寂しい」と感じるならauto-fitを選ぶのが正解です。逆に、どんな時もサイズ感を一定に保ちたいならauto-fillが便利ですよ。
生徒
なるほど。minmax(200px, 1fr)の「1fr」が、余ったスペースを分け合う単位だから、fitの場合は空の列がない分、要素に全部割り振られるってことなんですね。
先生
素晴らしい理解力です!その通り、fr単位との組み合わせがこのテクニックのキモになります。ちなみに、画面がすごく狭くなった時に200pxを下回ると、自動で次の行に送られるので、メディアクエリを書かなくてもスマホ対応ができるんです。
生徒
メディアクエリを使わなくていいなんて、コーディングがすごく楽になりますね。これからはカードレイアウトを作る時は、まずこの1行を思い出して書くようにします!
先生
その意気です!まずは手を動かして、いろんな数値を入れて試してみてください。CSSグリッドを使いこなせれば、デザインの幅がぐっと広がりますよ。頑張りましょうね!
【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー
「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。
本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。
具体的なワークショップ内容と環境
【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。
【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。
この60分で得られる3つの技術資産
要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。
後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。
画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。
※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。
リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら