横スクロールできるカード一覧を作る方法【HTML/CSS・サンプルコード付き】

カードUI
無料ツール
カードを自由に作成

タイトル・説明文・サイズ・配置・背景色・枠線・影・文字などを設定して、HTMLとCSSを自動生成できます。

カード作成ツールを使う
新しいタブで開きます

横スクロールできるカード一覧を作る方法

横スクロールできるカード一覧を作る方法を紹介します。このサンプルでは、複数のカードを横方向に並べ、表示エリアの横幅に収まらないカードを横スクロールして確認できるレイアウトを作成します。カードを次の行へ折り返さず横並びの状態を維持するため、複数の情報を一列にまとめて表示できます。

商品一覧、関連記事、おすすめコンテンツ、サービス紹介、カテゴリー一覧など、複数のカードを横方向へ続けて見せたい場面に利用できます。PCとスマートフォンのどちらでもカードを横並びにし、表示エリアからはみ出した部分は横スクロールで確認できるため、カードの並び方を維持したまま画面幅の異なる環境へ対応できます。

HTMLではカードタイトルや説明文を変更でき、カードを追加することで表示件数を増やせます。CSSではカードの横幅、カード同士の間隔、余白、枠線、角丸、背景色、文字サイズなどを調整できます。横並びにはFlexboxを使用し、横方向のスクロールにはoverflow-xを使用する、シンプルなカード一覧のサンプルです。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

カードタイトル1

横方向へスクロールして確認できるカード一覧のサンプルです。

カードタイトル2

カードを折り返さず、横並びの状態を維持して表示します。

カードタイトル3

表示エリアに収まらないカードは横スクロールで確認できます。

カードタイトル4

PCとスマートフォンのどちらでも横方向へスクロールできます。

カード一覧を左右へスクロールすると、横に並んだカードを確認できます。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>横スクロールできるカード一覧</title>

  <!-- CSSファイル -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- 横スクロールエリア -->
  <div class="horizontal-scroll-cards_area">

    <!-- カード一覧 -->
    <div class="horizontal-scroll-cards_list">

      <!-- カード1 -->
      <article class="horizontal-scroll-cards_card">

        <!-- カードタイトル -->
        <div class="horizontal-scroll-cards_title">
          カードタイトル1
        </div>

        <!-- カード説明文 -->
        <p class="horizontal-scroll-cards_text">
          横方向へスクロールして確認できるカード一覧のサンプルです。
        </p>

      </article>

      <!-- カード2 -->
      <article class="horizontal-scroll-cards_card">

        <!-- カードタイトル -->
        <div class="horizontal-scroll-cards_title">
          カードタイトル2
        </div>

        <!-- カード説明文 -->
        <p class="horizontal-scroll-cards_text">
          カードを折り返さず、横並びの状態を維持して表示します。
        </p>

      </article>

      <!-- カード3 -->
      <article class="horizontal-scroll-cards_card">

        <!-- カードタイトル -->
        <div class="horizontal-scroll-cards_title">
          カードタイトル3
        </div>

        <!-- カード説明文 -->
        <p class="horizontal-scroll-cards_text">
          表示エリアに収まらないカードは横スクロールで確認できます。
        </p>

      </article>

      <!-- カード4 -->
      <article class="horizontal-scroll-cards_card">

        <!-- カードタイトル -->
        <div class="horizontal-scroll-cards_title">
          カードタイトル4
        </div>

        <!-- カード説明文 -->
        <p class="horizontal-scroll-cards_text">
          PCとスマートフォンのどちらでも横方向へスクロールできます。
        </p>

      </article>

    </div>

  </div>

</body>
</html>

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLでは4枚のカードを一覧として配置し、CSSではFlexboxを使用してカードを横一列に並べています。カードを次の行へ折り返さず、表示エリアに収まらない部分へoverflow-x:auto;を指定することで、PC・タブレット・スマートフォンで横スクロールできるカード一覧を作成します。

sample/
├── index.html
└── style.css

各ファイルの役割
index.htmlは横スクロールするカード一覧の内容を構成するファイルです。サンプルでは4枚のカードを配置しており、それぞれのカードタイトルと説明文を変更できます。同じhorizontal-scroll-cards_cardのarticle要素を追加・削除することで、表示するカードの件数も変更できます。

style.cssはカード一覧の横並び、横スクロール、カードのサイズやデザインを設定するファイルです。display:flex;でカードを横方向へ並べ、flex-wrap:nowrap;で折り返しを防ぎます。横スクロールエリアにはoverflow-x:auto;を指定し、カード一覧にはwidth:max-content;を指定することで、表示領域を超えたカードを左右へスクロールして確認できるようにしています。

設置方法・使い方
sampleフォルダへindex.htmlstyle.cssを配置します。index.htmlから同じ階層にあるstyle.cssを読み込む構成になっているため、2つのファイルを配置したあと、sample/index.htmlをブラウザで開くと横スクロールできるカード一覧を確認できます。

カード一覧が表示エリアの横幅を超えると、カードは次の行へ折り返さず横方向へ続きます。PCでは横スクロール操作、スマートフォンやタブレットでは左右のスワイプ操作によって、表示エリアからはみ出しているカードを確認できます。

カスタマイズできる内容
index.htmlでは各カードのタイトルと説明文を変更できます。カードを増やす場合は、既存の<article class="horizontal-scroll-cards_card">から</article>までを複製し、タイトルと説明文を書き換えます。不要なカードは対応するarticle要素を削除することで表示件数を減らせます。

style.cssでは横スクロールエリアの最大横幅、カード同士の間隔、カードの横幅、内側余白、枠線、角丸、背景色、影、タイトルと説明文の文字サイズ・文字色・行間などを変更できます。スマートフォンで使用するカードの横幅やカード同士の間隔も変更できます。

数値調整
style.css
padding:40px 0;
ページ全体の上下余白です。40pxを大きくするとカード一覧の上下に広い余白ができ、小さくすると余白が狭くなります。

max-width:1000px;
横スクロールエリアの最大横幅です。値を大きくすると一度に表示できる範囲が広くなり、小さくすると横スクロールが発生しやすくなります。

gap:20px;
カード同士の間隔です。値を大きくするとカード同士が離れ、小さくすると間隔が狭くなります。

padding:10px 20px 24px;
カード一覧の内側余白です。10pxは上、20pxは左右、24pxは下の余白を表します。値を変更するとカード一覧と表示エリア端との間隔が変わります。

width:280px;
PC・タブレットでのカードの横幅です。値を大きくすると1枚のカードが横に広がり、小さくするとコンパクトになります。

flex:0 0 280px;
カードを280pxの幅で配置し、横幅が不足しても縮小しないようにする指定です。カードの基本横幅を変更する場合は、width:280px;と合わせて値を変更します。

padding:24px;
カードの内側余白です。値を大きくするとカードの端とタイトル・説明文との間隔が広がり、小さくすると詰まった表示になります。

border:1px solid #e5e7eb;
カードの枠線です。1pxを大きくすると枠線が太くなり、小さくすると細くなります。

border-radius:12px;
カードの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

box-shadow:0 8px 20px rgba(15,23,42,.08);
カードの影です。8pxや20pxを変更すると、影の位置やぼかし具合を調整できます。

margin:0 0 12px;
カードタイトルの下側余白です。12pxを大きくするとタイトルと説明文の間隔が広がり、小さくすると狭くなります。

font-size:20px;
カードタイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると小さくなります。

line-height:1.5;
カードタイトルの行間です。タイトルが複数行になった場合の行と行の間隔を調整できます。

font-size:16px;
カード説明文の文字サイズです。値を大きくすると説明文が大きくなり、小さくすると小さくなります。

line-height:1.8;
カード説明文の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。

@media (max-width:640px)
スマートフォン向けの表示へ切り替える基準です。画面幅640px以下になると、カード同士の間隔、一覧の余白、カードの横幅を変更します。

gap:16px;
画面幅640px以下でのカード同士の間隔です。値を大きくすると間隔が広がり、小さくするとカード同士が近くなります。

padding:10px 18px 20px;
画面幅640px以下でのカード一覧の内側余白です。10pxは上、18pxは左右、20pxは下の余白を表します。

width:260px;
画面幅640px以下でのカードの横幅です。値を大きくするとスマートフォンでカードが横に広がり、小さくすると一度に見える次のカードの範囲が広くなります。

flex-basis:260px;
画面幅640px以下でカードの基準となる横幅を260pxへ変更します。スマートフォンでカードの横幅を変更する場合は、width:260px;と合わせて値を変更します。

レスポンシブ対応
このサンプルはstyle.cssでレスポンシブ対応しています。横スクロールエリアにはwidth:100%max-width:1000pxを指定し、利用できる画面幅に合わせて表示領域が縮小する構成です。カードはflex-wrap:nowrap;によって折り返さず、overflow-x:auto;によって画面内に収まらない部分を横スクロールできるため、画面幅が狭くなっても横並びを維持します。

また、画面幅640px以下では@media (max-width:640px)を使用し、カードの横幅を280pxから260px、カード同士の間隔を20pxから16px、一覧の左右余白を20pxから18pxへ変更しています。PC・タブレット・スマートフォンのいずれでもカードを横一列に表示し、収まらないカードを左右へスクロールして確認できます。


コメント