CSSで等間隔配置を実現:1行に複数または複数行に配置

CSSで等間隔配置を実現:1行に複数または複数行に配置

CSSでは、特にレスポンシブデザインで要素を等間隔に配置することがよくあります。列数と間隔を動的に制御することで、柔軟なレイアウトが可能になります。以下は、10個のアイテムを含む例を使用して、1行に5個のアイテムを表示する方法を示します。もちろん、この数は必要に応じて調整できます。

HTML構造:

<div class="list">
    <div class="item">01</div>
    <div class="item">02</div>
    <div class="item">03</div>
    <div class="item">04</div>
    <div class="item">05</div>
    <div class="item">06</div>
    <div class="item">07</div>
    <div class="item">08</div>
    <div class="item">09</div>
    <div class="item">10</div>
</div>

実際の使用例では、.itemの中にさらに多くの内容が含まれることがあります。ここでは数字を使ってアイテムを表しています。

SCSSコード:

Flexboxを使用した等間隔配置

:root {
    --theme-color: #ffe4c4;
    --theme-shadow-color: rgba(0, 0, 0, .9);
    --flex-list-col-num: 5; /* 列の数 */
    --flex-list-column-gap: 1em; /* 列間の間隔 */

    /* --flex-width: calc(100% / var(--flex-list-col-num) - (var(--flex-list-column-gap) * calc(var(--flex-list-col-num) - 1) / var(--flex-list-col-num))); */

    /* より効率的な書き方(数学的に簡略化したバージョン) */
    --flex-width: calc((100% - var(--flex-list-column-gap) * (var(--flex-list-col-num) - 1)) / var(--flex-list-col-num));
}

.list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--flex-list-column-gap);

    .item {
        width: var(--flex-width);
        min-height: 200px;
        background-color: var(--theme-color);
        box-shadow: 0 0 10px var(--theme-shadow-color);

        display: flex;
        align-items: center;
        justify-content: center;
    }
}

説明:

  • --flex-list-col-num は、1行に表示するアイテムの数を制御します。これを変更することで、1行の列数を調整できます。
  • --flex-list-column-gap は、アイテム間の間隔を制御します。
  • calc() 関数を使って各アイテムの幅を動的に計算し、画面幅に応じて自動的に調整されます。

この方法の利点は、レイアウトを調整する際に、--flex-list-col-num--flex-list-column-gap の2つの変数だけを変更すればよいので、コードの重複を大幅に減らすことができます。

Gridを使用した等間隔配置

Flexboxの他に、CSS Gridを使っても非常に簡単に等間隔配置を実現できます。以下はGridレイアウトで同様の効果を得るためのコードです:

.list {
    display: grid;
    grid-template-columns: repeat(var(--flex-list-col-num), 1fr);
    gap: var(--flex-list-column-gap);

    .item {
        min-height: 200px;
        background-color: var(--theme-color);
        box-shadow: 0 0 10px var(--theme-shadow-color);

        display: flex;
        align-items: center;
        justify-content: center;
    }
}

説明:

  • grid-template-columns: repeat(var(--flex-list-col-num), 1fr) によって、各アイテムは等しいスペースを占め、列数は --flex-list-col-num で制御されます。
  • gap プロパティは、アイテム間の間隔を設定します。

--flex-list-col-num--flex-list-column-gap を調整することで、1行に表示するアイテム数やその間隔を簡単に管理できます。FlexboxとGridのいずれを使用しても、シンプルでコントロールしやすい効果を得られます。レスポンシブデザインにおいては、この方法が特に役立ち、コード量を削減し開発効率を向上させることができます。

関連記事
iPhone(iOS Safari)における input タグの角丸問題とその対策
iPhone(iOS Safari)でinputタグに自動で適用される角丸スタイルを無効化する方法を詳しく解説。CSSによるリセットやカスタムスタイルの実装手順を、具体的なコードとともに紹介します。
キウイフルーツ
キウイフルーツ
1ヶ月前
iPhone(iOS Safari)における input タグの角丸問題とその対策
SCSSの @for ループ(ループ文)
SCSSの @for ループ
無敵の小さな蚊
無敵の小さな蚊
2ヶ月前
SCSSの @for ループ(ループ文)
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
:not()疑似クラスはCSSでの除外指定に便利ですが、親要素や階層関係に対しては思わぬ制約があります。本記事では、WordPressの投稿構造を例に、インラインコードとコードブロックを正確に区別するためのセレクタ設計を解説します。
無敵の小さな蚊
無敵の小さな蚊
1ヶ月前
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
本コードは典型的なモバイル用サイドナビゲーションの実装例です。ボタンによる表示切替と、メニュー外クリック検知を組み合わせることで、ユーザー体験を向上させています。さらにESCキーでのメニュー閉鎖も可能にし、アクセシビリティも配慮しています。
Details
Details
2ヶ月前
JavaScriptでナビゲーション以外の場所をクリックしたらナビゲーションを閉じる
!important なしでも大丈夫!CSS @layer でスタイル管理をもっと簡単に
CSS の !important は便利ですが、乱用すると保守が難しくなります。そこで注目されているのが新機能 @layer。この記事では、@layer を使って優先度を整理する方法を実装例とともに紹介します。
Details
Details
8日前
!important なしでも大丈夫!CSS @layer でスタイル管理をもっと簡単に
ページ遷移の一般的な方法
本記事では、Webページにおけるページ遷移(リダイレクト)の一般的な実装方法について紹介しています。JavaScript、HTMLのメタタグ、PHP、ASPを用いたリダイレクト方法をそれぞれ具体的なコード例と共に解説しています。
Details
Details
2ヶ月前
ページ遷移の一般的な方法
第1回:ウェブにおける色の基礎(2025年最新版)
ウェブデザインの基礎「色」について、2025年最新トレンドやアクセシビリティ・ダークモード対応まで、実務ですぐ使えるCSS色指定方法を分かりやすく解説。初心者から現場のデザイナーまで必見のカラーマネジメント入門ガイド。
aki0o0
aki0o0
2ヶ月前
フッターのJavaScriptは画像読み込みに影響する?ブラウザの読み込み順と最適化の基本
はじめに Webサイトの表示速度や操作感は、単にコンテンツの量や見た目だけでなく、ブラウザがリソースをどのように読み込むかによっても大きく左右されます。特にJavaScriptや画像の読み込み順序、そしてそれらがどのように相互作用しているか […]
解構人
解構人
1ヶ月前
フッターのJavaScriptは画像読み込みに影響する?ブラウザの読み込み順と最適化の基本
IT業界の初心者が知っておくべきの用語(2025版)
新しいテクノロジーについて話すとき、時々自分がみんなのペースについていけないと感じることはありませんか?あるいは、その業界にいるのに、自分はまだ十分ではないと感じ、多くの専門用語を理解しなければならないこともあるでしょう。
Details
Details
1ヶ月前
IT業界の初心者が知っておくべきの用語(2025版)
CSSによる絶対中央寄せ
実用性が高い方法順で7種類の実装方法を紹介 最も推奨されるのは Flexbox と Grid transform を使う方法はどんな要素にも応用可能 line-height や table-cell は特定用途向け JavaScript による制御も紹介されている
Details
Details
2ヶ月前
CSSによる絶対中央寄せ
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?
ブラウザのキャッシュによる古いJavaScript、CSS、画像の表示を防ぐには、URLにバージョン番号や日時パラメータを付けてリソースを更新する方法が有効です。 毎回タイムスタンプを使うとキャッシュ効果がなくなるため、手動や適切なタイミングでバージョン番号を管理するのがおすすめです。
Details
Details
2ヶ月前
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?
inputのプレースホルダー(placeholder)の色を変更する
プレースホルダーの色は::placeholder疑似要素で変更可能 IEやEdgeなどの古いブラウザ向けに:-ms-input-placeholder、::-ms-input-placeholderを併用 Firefoxでは透明度の調整のためopacity指定が推奨される
Details
Details
2ヶ月前
inputのプレースホルダー(placeholder)の色を変更する
全角と半角の違いとは?変換方法をわかりやすく解説【ツール付き】
はじめに 日本語のテキストを扱う場面で、「全角」と「半角」の使い分けに悩んだことはありませんか?入力ミスやシステムの不具合、さらには検索精度の低下につながることもあり、特にWeb制作や文字校正では注意が必要です。本記事では、全角・半角の基本 […]
aki0o0
aki0o0
1ヶ月前
全角と半角の違いとは?変換方法をわかりやすく解説【ツール付き】
SafariでGoogleフォントが正しく表示されない原因と対策【font-weight・font-style完全ガイド】
SafariやiOSでGoogleフォントが正しく表示されない主な原因と対策を徹底解説。font-weight・font-styleの指定ミスによるWebフォント崩れを解決するCSSサンプル付きガイド。
aki0o0
aki0o0
2ヶ月前
SafariでGoogleフォントが正しく表示されない原因と対策【font-weight・font-style完全ガイド】
SEOは聞いたことありますよね?ではGEOってご存知ですか?|生成エンジン最適化(GEO)の重要性や必要なことをまとめました!
SEOは知ってるけどGEOは初耳?AI時代に欠かせない「生成エンジン最適化(GEO)」の意味・必要性・対策ポイントを初心者向けにやさしく解説!
WASABI
WASABI
28日前
SEOは聞いたことありますよね?ではGEOってご存知ですか?|生成エンジン最適化(GEO)の重要性や必要なことをまとめました!