基本のページネーションを作る方法【HTML/CSS/JavaScript・サンプルコード付き】

ページネーション

基本のページネーションを作る方法

基本のページネーションを作る方法を紹介します。このサンプルでは、No.1〜No.10までの10枚の記事カードを用意し、1ページにつき2枚ずつ表示します。ページ下部には1〜5のページ番号を配置し、クリックしたページ番号に合わせてJavaScriptで表示するカードを切り替えます。

1ページ目ではNo.1とNo.2、2ページ目ではNo.3とNo.4というように、10枚の記事カードを5ページに分けて確認できます。一覧の件数が増えて縦に長くなる場合でも、一度に表示する件数を絞ることで内容を確認しやすくできます。記事一覧、商品一覧、管理画面のデータ一覧、会員サイトのコンテンツ一覧など、複数の項目を一定件数ずつ表示したい場面で利用できます。

HTMLでは10枚の記事カードとページ番号を配置し、CSSではカードやページネーションのデザインを整えます。JavaScriptでは1ページに表示する件数を2件に設定し、選択したページに該当するカードだけを表示します。カードのタイトルや説明文、カード枚数、1ページに表示する件数などを用途に合わせて変更でき、レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用できる基本的なページネーションのサンプルとして活用できます。

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

デモ

記事一覧

10枚の記事カードを1ページにつき2枚ずつ表示します。

No.1

サンプル記事 1

1件目のサンプル記事です。ここに記事の説明文を表示します。

No.2

サンプル記事 2

2件目のサンプル記事です。ここに記事の説明文を表示します。

No.3

サンプル記事 3

3件目のサンプル記事です。ここに記事の説明文を表示します。

No.4

サンプル記事 4

4件目のサンプル記事です。ここに記事の説明文を表示します。

No.5

サンプル記事 5

5件目のサンプル記事です。ここに記事の説明文を表示します。

No.6

サンプル記事 6

6件目のサンプル記事です。ここに記事の説明文を表示します。

No.7

サンプル記事 7

7件目のサンプル記事です。ここに記事の説明文を表示します。

No.8

サンプル記事 8

8件目のサンプル記事です。ここに記事の説明文を表示します。

No.9

サンプル記事 9

9件目のサンプル記事です。ここに記事の説明文を表示します。

No.10

サンプル記事 10

10件目のサンプル記事です。ここに記事の説明文を表示します。

1〜5のページ番号をクリックしてください。選択したページに合わせて、10枚の記事カードが2枚ずつ切り替わります。

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

<!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="basic-pagination_wrap">

    <!-- 一覧のタイトル。サイトに合わせて自由に書き換えられます。 -->
    <div class="basic-pagination_title">
      記事一覧
    </div>

    <!-- 一覧の説明文。表示内容に合わせて自由に書き換えられます。 -->
    <p class="basic-pagination_text">
      10枚の記事カードを1ページにつき2枚ずつ表示します。
    </p>

    <!--
      記事カード一覧
      ここは実際にページネーションで切り替えて表示する内容です。
      各カードの番号・タイトル・説明文は自由に書き換えて使用できます。
      カードを追加・削除する場合は、ページ数も内容に合わせて調整してください。
    -->
    <div class="basic-pagination_list">

      <!-- 記事カード No.1 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.1</p>
        <div class="basic-pagination_card-title">
          サンプル記事 1
        </div>
        <p class="basic-pagination_card-text">
          1件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.2 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.2</p>
        <div class="basic-pagination_card-title">
          サンプル記事 2
        </div>
        <p class="basic-pagination_card-text">
          2件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.3 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.3</p>
        <div class="basic-pagination_card-title">
          サンプル記事 3
        </div>
        <p class="basic-pagination_card-text">
          3件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.4 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.4</p>
        <div class="basic-pagination_card-title">
          サンプル記事 4
        </div>
        <p class="basic-pagination_card-text">
          4件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.5 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.5</p>
        <div class="basic-pagination_card-title">
          サンプル記事 5
        </div>
        <p class="basic-pagination_card-text">
          5件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.6 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.6</p>
        <div class="basic-pagination_card-title">
          サンプル記事 6
        </div>
        <p class="basic-pagination_card-text">
          6件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.7 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.7</p>
        <div class="basic-pagination_card-title">
          サンプル記事 7
        </div>
        <p class="basic-pagination_card-text">
          7件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.8 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.8</p>
        <div class="basic-pagination_card-title">
          サンプル記事 8
        </div>
        <p class="basic-pagination_card-text">
          8件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.9 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.9</p>
        <div class="basic-pagination_card-title">
          サンプル記事 9
        </div>
        <p class="basic-pagination_card-text">
          9件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

      <!-- 記事カード No.10 -->
      <article class="basic-pagination_card" data-basic-pagination-card="">
        <p class="basic-pagination_card-number">No.10</p>
        <div class="basic-pagination_card-title">
          サンプル記事 10
        </div>
        <p class="basic-pagination_card-text">
          10件目のサンプル記事です。ここに記事の説明文を表示します。
        </p>
      </article>

    </div>

    <!--
      ページネーション
      ここがページを切り替えるページ番号部分です。
      このサンプルでは10枚のカードを2枚ずつ表示するため、1〜5まで用意しています。
      ページ数を変更する場合は、カード数と1ページの表示件数に合わせてボタンを追加・削除してください。
    -->
    <nav class="basic-pagination_nav" aria-label="ページネーション">

      <!-- 1ページ目。最初に選択されるページです。 -->
      <button
        class="basic-pagination_button is-current"
        type="button"
        data-basic-pagination-page="1"
        aria-current="page">
        1
      </button>

      <!-- 2ページ目 -->
      <button
        class="basic-pagination_button"
        type="button"
        data-basic-pagination-page="2">
        2
      </button>

      <!-- 3ページ目 -->
      <button
        class="basic-pagination_button"
        type="button"
        data-basic-pagination-page="3">
        3
      </button>

      <!-- 4ページ目 -->
      <button
        class="basic-pagination_button"
        type="button"
        data-basic-pagination-page="4">
        4
      </button>

      <!-- 5ページ目 -->
      <button
        class="basic-pagination_button"
        type="button"
        data-basic-pagination-page="5">
        5
      </button>

    </nav>

  </div>

  <!-- ページ切り替え処理を行うJavaScriptファイル -->
  <script src="script.js"></script>

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

コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。 サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
A

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLにはNo.1〜No.10までの10枚の記事カードと、1〜5までのページ番号を配置します。CSSで記事カードとページネーションの見た目を整え、JavaScriptで選択したページに合わせて表示する記事カードを切り替えます。

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

各ファイルの役割
index.htmlは記事一覧とページネーションを構成するファイルです。サンプルでは10枚の記事カードを用意しています。各カードのNo.、タイトル、説明文は自由に書き換えられます。ページネーション部分には1〜5までのページ番号を配置しています。

style.cssは記事一覧とページネーションのデザインを設定するファイルです。記事カードの余白、背景色、枠線、角丸のほか、ページ番号の大きさ、間隔、色、角丸、現在表示しているページの色などを変更できます。

script.jsはページ番号をクリックしたときに表示する記事カードを切り替えるファイルです。サンプルでは1ページにつき2枚を表示し、10枚の記事カードを5ページに分けています。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsを読み込むため、追加のライブラリやサーバーは必要ありません。

最初はNo.1とNo.2の記事カードが表示されます。ページ番号の「2」をクリックするとNo.3とNo.4、「3」をクリックするとNo.5とNo.6というように、選択したページに合わせて表示内容が2枚ずつ切り替わります。

カスタマイズできる内容
index.htmlでは「記事一覧」のタイトル、説明文、各記事カードの番号・タイトル・説明文を変更できます。実際の記事一覧や商品一覧などで使用する場合は、サンプル記事の内容を表示したい内容へ書き換えてください。記事カードを追加・削除する場合は、必要なページ数に合わせてページ番号のボタンも追加・削除します。

style.cssでは記事一覧全体の余白、背景色、枠線、角丸、記事カードのデザイン、ページ番号の大きさや間隔、通常時・ホバー時・現在ページの色などを変更できます。ページネーションの形を変更したい場合は、.basic-pagination_buttonの横幅、高さ、枠線、角丸などを調整します。

script.jsではbasicPaginationItemsPerPageを変更すると、1ページに表示する記事カードの件数を変更できます。初期値は2のため、10枚の記事カードを2枚ずつ5ページに分けて表示します。

数値調整
style.css
margin:40px auto;
記事一覧全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
記事一覧全体の内側余白です。値を大きくすると内容と外側の枠線との間隔が広がります。

border-radius:18px;
記事一覧全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

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

padding:24px;
記事カードの内側余白です。値を大きくするとカード内の文章と枠線との間隔が広がります。

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

gap:10px;
ページ番号同士の間隔です。値を大きくするとページ番号同士が離れ、小さくすると近くなります。

margin-top:28px;
記事カードとページネーションの間隔です。値を大きくするとページ番号が記事カードから離れます。

width:48px;・height:48px;
ページ番号の横幅と高さです。値を大きくするとページ番号のボタンが大きくなり、小さくするとコンパクトになります。

border-radius:10px;
ページ番号の角丸です。値を大きくすると丸みが強くなります。横幅と高さの半分程度まで大きくすると、より丸い形にできます。

.3s
ページ番号へマウスを重ねたときの色の切り替え時間です。値を大きくするとゆっくり、小さくすると速く変化します。

script.js
const basicPaginationItemsPerPage = 2;
1ページに表示する記事カードの件数です。2を3へ変更すると1ページ3件、4へ変更すると1ページ4件になります。表示件数を変更した場合は、カード総数に合わせてindex.htmlのページ番号も調整してください。

basicPaginationShowPage(1);
ページを開いたときに最初に表示するページ番号です。初期値の1では1ページ目を表示します。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%によって記事一覧全体が利用できる横幅に合わせて表示され、ページ番号はflex-wrap:wrap;によって横幅が足りない場合に折り返します。また、画面幅640px以下では記事一覧全体をpadding:24px 18px;、記事カードをpadding:20px 16px;、ページ番号を44px四方へ変更しているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント