投稿日:2022年1月1日
先日の絞り込み検索 の機能にページネーションの機能を追加する要望がありました。
jQueryでページネーションを実装してみたいと思います。
ググると数種類のページネーションjQueryライブラリがヒットします。
今回は、paginathing.js を検証してみます。
Github からpaginathing.min.jsをダウンロードしhtmlに読み込んで使用します。
ソースコードは以下。
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ▼▼▼ style.css -->
<link rel="stylesheet" href="css/style.css">
<!-- ▼▼▼ normalize.css -->
<link rel="stylesheet" href="css/normalize.css">
<!-- ▼▼▼ jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<!-- ▼▼▼ paginathing.js読み込み -->
<script src="js/paginathing.min.js"></script>
<!-- ▼▼▼ Fontawesome -->
<script src="https://kit.fontawesome.com/79d73fee52.js" crossorigin="anonymous"></script>
<title>paginathing</title>
</head>
<body>
<!-- ▼▼▼ ここにhtmlを出力する -->
<section id="contents"></section>
<!-- ▼▼▼ js読み込み -->
<script src="js/index.js"></script>
</body>
</html>
▲20行目でpaginathing.min.jsを読み込んでいます。
<section id="contents"></section>
▲29行目、id値を取得しJavaScriptのmap()関数でhtmlを出力します。
index.js
// ▼▼▼ htmlに出力する項目を配列に追加
var nums = [{
num: "01"
},
{
num: "02"
}, {
num: "03"
}, {
num: "04"
}, {
num: "05"
}, {
num: "06"
}, {
num: "07"
}, {
num: "08"
}, {
num: "09"
}, {
num: "10"
},
]
// ▼▼▼ paginathingのオプション
$(function () {
$('#contents').paginathing({
limitPagination: 2,
pageNumbers: true,
perPage: 5,
firstText: '<i class="fas fa-angle-double-left"></i>',
lastText: '<i class="fas fa-angle-double-right"></i>',
prevText: '<i class="fas fa-angle-left"></i>',
nextText: '<i class="fas fa-angle-right"></i>',
activeClass: 'active',
});
});
// ▼▼▼ map()関数でループ、htmlに出力
const setNums = () = & gt; {
return nums.map((data) = & gt; {
return '<div class="contentsWrap"><div><p class="num">' + data.num + '</p></div>'
})
}
// ▼▼▼ htmlに出力
$('#contents').html(setNums());
▲29〜36行目のオプションが要になります。
Available Options を参照してください。
firstText
、lastText
、prevText
、nextText
はFont Awesomeのキャラクターを出力する記述です。
activeClass
でアクティブなCSS値を設定し、CSSで黒矩形の白文字にしてあります。
よく見かける...
などの省略記号は実装できないみたいです。
style.css
.pagination {
list-style: none;
display: flex;
justify-content: center;
align-items: center;
}
.pagination li {
margin-right: 1em;
}
.pagination li a {
text-decoration: none;
color: #000;
}
.page {
padding: .5em;
border: 1px solid #000;
}
.active {
background-color: #000;
}
.pagination .active a {
color: #fff;
}
▲ページネーション関連のCSSです。
.pagination
やpage
という値が出力されるのでCSSで整えます。
▲以上、今回、作ったものです。
他にもpagination.js というものもあります。
pagination.js では省略記号も実装できるので次回以降検証したいと思います。
最終的には、絞り込み検索とページネーションの併用も行いたいので、この辺も検証したいと思います。
最後まで読んでくださりありがとうございました。