(Sample)

ページネーション【Pagination】は、ウェブサイトやアプリケーションで長いリストや複数のページで構成されるコンテンツを複数のページに分割して表示するための手法です。これにより、ユーザーは大量のコンテンツを管理しやすくなり、必要な情報を見つけやすくなります。

ページネーションは、特に以下のような場合によく使用されます:

  1. データの多いテーブルやリストの表示: データベースのクエリ結果やサーバーからの大量のデータを表示する場合、全てのデータを1つのページに表示するとページが非常に長くなってしまいます。ページネーションを使用することで、データを複数のページに分割し、利用者は必要なデータを探しやすくなります。
  2. 検索結果の表示: 検索エンジンやオンラインストアなどで検索結果を表示する場合、多くの項目が見つかる可能性があります。ページネーションを使えば、ユーザーは検索結果をページごとにナビゲートし、該当する結果を見つけやすくなります。
  3. コメントやフォーラムのスレッド表示: コメントやフォーラムのスレッドが長くなる場合、ページネーションを使ってそれらを分割することができます。これにより、ユーザーは特定のページのコメントやスレッドに参加しやすくなります。

一般的なページネーションの要素には、ページ番号や「前へ」「次へ」のリンク、最初や最後のページへのリンクなどがあります。ユーザーがこれらの要素をクリックすると、新しいページのコンテンツが表示されます。

ページネーションは、ユーザーエクスペリエンスの向上やパフォーマンスの最適化に役立ちます。ユーザーは必要な情報を素早く見つけることができ、サーバーやクライアントの負荷も軽減されます。

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	<style>
		/* ページングコンテナのスタイル */
		#pagination {
			margin-top: 10px;
		}

		/* ページ番号のリンクのスタイル */
		#pagination a {
			display: inline-block;
			margin-right: 5px;
			padding: 5px 10px;
			text-decoration: none;
			color: #000;
			border: 1px solid #ccc;
			border-radius: 4px;
		}

		/* アクティブなページ番号のスタイル */
		#pagination a.active {
			background-color: #007bff;
			color: #fff;
			border-color: #007bff;
		}

		/* データアイテムのスタイル */
		#data div {
			margin-bottom: 5px;
			padding: 10px;
			background-color: #f7f7f7;
			border: 1px solid #ccc;
			border-radius: 4px;
		}
	</style>
</head>

<body>
	<div id="data"></div>
	<div id="pagination"></div>
	<script>
		// ダミーデータの配列
		const dummyData = Array.from({length: 50}, (_, index) => index + 1);

		// 1ページあたりのアイテム数と現在のページ番号
		const itemsPerPage = 10;
		let currentPage = 1;

		// 現在のページのデータを取得する関数
		function getCurrentPageData() {
			const startIndex = (currentPage - 1) * itemsPerPage;
			const endIndex = startIndex + itemsPerPage;
			return dummyData.slice(startIndex, endIndex);
		}

		// ページ番号を表示する関数
		function renderPageNumbers() {
			const totalPages = Math.ceil(dummyData.length / itemsPerPage);
			const paginationElement = document.getElementById('pagination');

			// ページ番号をクリア
			paginationElement.innerHTML = '';

			// ページ番号を生成
			for (let i = 1; i <= totalPages; i++) {
				const pageLink = document.createElement('a');
				pageLink.href = '#';
				pageLink.textContent = i;

				// 現在のページにはアクティブなスタイルを適用
				if (i === currentPage) {
					pageLink.classList.add('active');
				}

				// ページ番号をクリックしたときの処理を設定
				pageLink.addEventListener('click', () => {
					currentPage = i;
					renderPage();
				});

				// ページ番号を追加
				paginationElement.appendChild(pageLink);
			}
		}

		// 現在のページのデータを表示する関数
		function renderPage() {
			const dataElement = document.getElementById('data');
			const currentPageData = getCurrentPageData();

			// データをクリア
			dataElement.innerHTML = '';

			// データを表示
			currentPageData.forEach((item) => {
				const itemElement = document.createElement('div');
				itemElement.textContent = `Item ${item}`;
				dataElement.appendChild(itemElement);
			});

			// ページ番号を表示
			renderPageNumbers();
		}

		// ページ初期表示
		renderPage();

	</script>

</body>

</html>

最後までお読みいただきありがとうございます。