ページネーションとは、記事一覧ページなどの下部に表示されるページ送りのナビゲーションのことです。ページャーと呼ばれることもあります。
この記事ではCocoonのデフォルトのページネーションをCSSでカスタマイズする方法をご紹介します。Cocoonがベースですが、デザインはCocoon以外でも利用できると思います。ちなみに、Cocoonのデフォルトのデザインはこのようになっています。


「次のページ」の主張がなかなか強いにゃ
ページネーションは2ページ目以降がないと表示されないので、記事数が少ないサイト立ち上げ時などは存在を忘れてたりします。ある日、サイトのデザインと全然違うページネーションが出てくると慌てちゃいますね。
CocoonのデフォルトのHTMLとCSSの確認
CocoonのページネーションのHTMLとCSSを確認しておきましょう。HTMLは下記のようになっています。HTMLはこのまま利用します。
<div class="pagination-next">
<a href="" class="pagination-next-link key-btn">次のページ</a>
</div>
<div class="pagination">
<span aria-current="page" class="page-numbers current">1</span>
<a class="page-numbers" href="">2</a>
<a class="page-numbers" href="">3</a>
<span class="page-numbers dots">…</span>
<a class="page-numbers" href="">8</a>
<a class="next page-numbers" href="">
<span class="screen-reader-text">次へ</span><span class="fa fa-angle-right" aria-hidden="true"></span>
</a>
</div>割り当てられているクラスを簡単にお伝えしておきます。
| .pagination-next | 「次のページ」ボタンのクラス |
| .pagination | ページネーションブロック全体のクラス |
| .page-numbers | ページ送りの各リンクのクラス |
| .current | 現在地表示のクラス |
| .dots | ページ数が多い時に表示される「…」のクラス |
| .next | 右端の「>」アイコンのクラス。左端に出て来る「<」のクラスはprev |
| .screen-reader-text | スクリーンリーダー用のクラス。気にしなくてOK |
CSSは長いので下記に畳みました。
/*============================
*Cocoonのデフォルトのスタイル
============================*/
.pagination-next{
margin-top: 24px;
}
.pagination-next-link{
background-color: #f9f9f9;
border: 1px solid #ddd;
color: #333;
display: block;
font-size: 1.2em;
text-decoration: none;
width: 100%;
text-align: center;
padding: 10px;
display: block;
}
.pagination-next-link:hover{
background-color: #f5f8fa;
transition: all 0.3s ease-in-out;
color: #333;
}
.pagination{
margin: 24px 0;
clear: both;
text-align: center;
display: inline-flex;
justify-content: center;
width: 100%;
}
.pagination .current{
background-color: #eee;
}
.pagination a:hover{
background-color: #f5f8fa;
transition: all 0.3s ease-in-out;
color: #333;
}
.page-numbers{
color: #333;
text-decoration: none;
display: inline-block;
height: 46px;
width: 46px;
border: 1px solid #ddd;
margin: 0 4px;
line-height: 46px;
text-align: center;
border-radius: 4px;
}
.page-numbers span{
line-height: inherit;
}
.page-numbers.dots{
opacity: 0.6;
background-color: #f5f6f7;
}
.page-numbers, .pagination-next-link{
border-color: #e3e3e3 #cecece #b4b4b4 #d6d6d6;
border-width: 1px;
border-style: solid;
}
.fa{
display: inline-block;
font: normal normal normal 14px / 1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.screen-reader-text{
border: 0;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
word-wrap: normal !important;
}
@media screen and (max-width: 480px){
.page-numbers{
width: 34px;
height: 34px;
line-height: 34px;
}
.pagination-next-link{
font-size: 1em;
}
}Cocoonをお使いの方はこれからご紹介していくカスタマイズ用のCSSを子テーマのstyle.cssなどにコピペして使ってください。デフォルトのスタイルを上書きする形でカスタマイズが反映されます。Cocoonを使用していない方は、上記のCocoon側で設定されているスタイルも一部反映しないと崩れてしまうところがあると思いますので、適宜カスタマイズしてください。
CSSでデザインをカスタマイズ
「次のページ」ボタンを非表示にする
大きくて目を引く「次のページ」ボタンですが、要らない場合はCSSで非表示にしちゃいましょう。下記を入れるだけで非表示にできます。
.pagination-next{
display: none;
}デザインサンプルでは表示したままにしておきますが、不要な場合は上記で非表示にして下さい。
シンプルホワイト&ブラック
角丸を取った黒と白のシンプルなデザイン。色を変えてどんなサイトにも使用できます。
See the Pen
Untitled by なないろ (@tflkhcei-the-vuer)
on CodePen.
.page-numbers, .pagination-next-link{
border-color: #333;
background-color: #fff;
border-radius: 0;
}
.page-numbers.dots{
border: none;
background-color: #fff;
opacity: 1;
}
.pagination .current{
background-color: #333;
color: #fff;
}
.pagination-next-link:hover, .pagination a:hover{
background-color: #333;
color: #fff;
}ふんわり丸
丸くして、ホバー時にはふんわり浮き上がります。これもどんなサイトでも使いやすいです。
See the Pen
ページネーション02 by なないろ (@tflkhcei-the-vuer)
on CodePen.
.pagination-next-link{
border-radius: 6px;
background-color: #5dc1cf;
border: none;
color: #fff;
}
.page-numbers{
border-color: #5dc1cf;
background-color: #fff;
border-radius: 50%;
}
.page-numbers.dots{
border: none;
background-color: #fff;
opacity: 1;
}
.pagination .current{
background-color: #5dc1cf;
color: #fff;
}
.pagination-next-link, .pagination a{
transition: .3s;
}
.pagination-next-link:hover, .pagination a:hover{
background-color: #bee8ed;
transform: translateY(-5px);
}
.pagination-next-link:hover{
color: #fff;
}上品めドロップシャドウ
淡いドロップシャドウと淡いカラーで上品で控えめな感じに。
See the Pen
ページネーション04 by なないろ (@tflkhcei-the-vuer)
on CodePen.
.pagination-next-link, .page-numbers{
border-radius: 0;
border: 1px solid #fff;
background-color: #dae5f2;
box-shadow: 0 3px 5px rgba(0, 0, 0, .05), 0 4px 4px -4px rgba(0, 0, 0, .1);
color: #666;
}
.page-numbers.dots{
border: none;
background-color: #fff;
opacity: 1;
box-shadow: none;
}
.pagination .current{
background-color: #00489d;
color: #fff;
}
.pagination-next-link, .pagination a{
transition: .3s;
}
.pagination-next-link:hover, .pagination a:hover{
background-color: #00489d;
color: #fff;
}角丸
角丸で柔らかい印象に。両端の「前へ」「次へ」の部分がないと角丸がなくなってしまうので、ない場合は:first-childと:last-childを指定した疑似要素に角丸をつけるようにしています。ページネーションを白にしたので背景色をつけました。
See the Pen
ページネーション06 by なないろ (@tflkhcei-the-vuer)
on CodePen.
.pagination-next-link{
border-radius: 0;
border: none;
background-color: #fff;
color: #b33e5c;
}
.page-numbers{
background-color: #fff;
border: 0;
border-radius: 0;
margin: 0;
padding: 0 5px;
color: #b33e5c;
}
.page-numbers.prev{
border-radius: 50% 0 0 50%;
}
.page-numbers.next{
border-radius: 0 50% 50% 0;
}
.page-numbers.dots{
border: none;
background-color: #fff;
opacity: 1;
}
.pagination .current{
background-color: #b33e5c;
color: #fff;
}
.pagination-next-link, .pagination a{
transition: .4s ease;
}
.pagination-next-link:hover{
background-color: #fff;
box-shadow: 0 4px 5px rgba(0, 0, 0, .06);
transform: translateY(-5px);
color: #b33e5c;
}
.pagination a:hover{
background-color: #b33e5c;
color: #fff;
}
.pagination span.current:first-child, .pagination span.current:last-child{
position: relative;
}
.pagination span.current:first-child::before, .pagination span.current:last-child::before{
content: '';
display: block;
position: absolute;
top: 0;
width: 50px;
height: 46px;
background-color: #fff;
z-index: -1;
}
.pagination span.current:first-child::before{
left: -25px;
border-radius: 50% 0 0 50%;
}
.pagination span.current:last-child::before{
right: -25px;
border-radius: 0 50% 50% 0;
}
@media screen and (max-width: 480px){
.pagination span.current:first-child::before, .pagination span.current:last-child::before{
width: 38px;
height: 34px;
}
}ボタン押し込み風
ホバー時にボタンを押し込んだようなアニメーションをします。
See the Pen
ページネーション03 by なないろ (@tflkhcei-the-vuer)
on CodePen.
.pagination-next, .pagination{
overflow: hidden;
}
.pagination-next-link, .page-numbers{
border-radius: 0;
border: none;
border-bottom: 2px solid #33302d;
background-color: #afa69b;
}
.page-numbers.dots{
border: none;
background-color: #fff;
opacity: 1;
}
.pagination .current{
background-color: #33302d;
color: #fff;
}
.pagination-next-link, .pagination a{
transition: .2s;
}
.pagination-next-link:hover, .pagination a:hover{
background-color: #afa69b;
color: #fff;
transform: translateY(5px);
}たまご
border-radiusでたまご型を作ってかわいらしく。ホバー時にはころんと傾きます。たまご…に見えますか?
See the Pen
ページネーション04 by なないろ (@tflkhcei-the-vuer)
on CodePen.
.pagination-next-link{
border-radius: 0;
border: none;
border-top: 1px solid #666;
border-bottom: 1px solid #666;
background-color: #fff;
color: #666;
}
.page-numbers{
height: 60px;
line-height: 60px;
border-radius: 80%/100% 100% 60% 60%;
border: 1px solid #666;
box-shadow: 0 5px 8px -2px rgba(0, 0, 0, .1), 0 3px 6px -4px rgba(0, 0, 0, .5);
margin: 0 10px;
aspect-ratio: 1 / 1;
}
.page-numbers.dots{
border: none;
background-color: #fff;
opacity: 1;
box-shadow: none;
margin: 0;
}
.pagination .current{
background-color: #fdfeb5;
color: #666;
}
.pagination-next-link{
transition: .3s;
}
.pagination-next-link:hover{
background-color: #fdfeb5;
color: #666;
}
.pagination a{
transition: .3s ease-out;
}
.pagination a:hover{
background-color: #fdfeb5;
transform: rotate(35deg);
}
@media screen and (max-width: 480px){
.page-numbers{
height: 46px;
line-height: 46px;
margin: 0 6px;
}
}肉球
現在地表示とホバー時に肉球が出ます。Font Awesomeの肉球アイコンを使っています。ペットや動物関連のブログやサイトにいかがでしょう!
See the Pen
ページネーション07 by なないろ (@tflkhcei-the-vuer)
on CodePen.
.page-numbers, .pagination-next-link{
border: none;
background-color: transparent;
border-radius: 0;
color: #f58787;
}
.page-numbers.dots{
border: none;
background-color: #fff;
opacity: 1;
}
.pagination .current{
background-color: transparent;
color: #fff;
position: relative;
}
.pagination-next-link{
border-top: 1px dashed #f58787;
border-bottom: 1px dashed #f58787;
}
.pagination-next-link:hover{
background-color: #f58787;
color: #fff;
}
.pagination a{
position: relative;
}
.pagination a:hover{
background-color: transparent;
color: #fff;
transition: .1s;
}
.pagination .current::before, .pagination a:hover::before{
display: block;
position: absolute;
font-family: 'Font Awesome 6 Free';
content: '\f1b0';
font-weight: 900;
font-size: 2.5em;
width: 46px;
height: 46px;
line-height: 35px;
color: #f58787;
z-index: -1;
}
@media screen and (max-width: 480px){
.pagination .current::before, .pagination a:hover::before{
width: 34px;
height: 34px;
line-height: 23px;
font-size: 2.2em;
}
}クール系矢印
矢印をかたどって、クールでシャープな雰囲気に。
See the Pen
ページネーション08 by なないろ (@tflkhcei-the-vuer)
on CodePen.
.pagination{
overflow-y: hidden;
}
.pagination-next-link{
border: 0;
background-color: #333;
border-radius: 0;
color: #fff;
}
.page-numbers{
position: relative;
border-radius: 0;
border: 0;
margin: 0 2px;
padding: 0 0 0 25px;
width: 50px;
height: 50px;
line-height: 50px;
background-color: #475b71;
color: #fff;
}
.page-numbers::before,.page-numbers::after{
position: absolute;
top: -5px;
content: '';
border-top: 30px solid transparent;
border-bottom: 30px solid transparent;
}
.page-numbers::before{
border-left: 20px solid #fff;
left: 0;
z-index: 5;
}
.page-numbers::after{
border-left: 20px solid #475b71;
left: 100%;
z-index: 10;
}
.page-numbers.dots{
border: none;
background-color: #475b71;
opacity: 1;
}
.pagination .current{
background-color: #abc0d7;
color: #475b71;
}
.pagination .current::after, .page-numbers:hover::after, .page-numbers.prev:hover::before{
border-left-color: #abc0d7;
}
.pagination .current::before{
border-left-color: #fff;
}
.pagination-next-link:hover, .pagination a:hover{
background-color: #abc0d7;
}
.pagination-next-link, .pagination a, .page-numbers::after, .page-numbers::before{
transition: .3s ease-in-out;
}
.page-numbers.dots:hover::after, .page-numbers.prev::before{
border-left-color: #475b71;
}
.pagination .current:first-child::before{
border-left-color: #abc0d7;
}
@media screen and (max-width: 480px){
.page-numbers{
position: relative;
padding: 0 0 0 18px;
width: 35px;
height: 40px;
line-height: 40px;
}
.page-numbers::before,.page-numbers::after{
top: -5px;
border-top: 25px solid transparent;
border-bottom: 25px solid transparent;
}
.page-numbers::before{
border-left: 15px solid #fff;
}
.page-numbers::after{
border-left: 15px solid #475b71;
}
}まとめ
先頭ページや最後尾ページには「前へ」「次へ」ボタンが表示されなくなったり、ページ数によって省略記号「…」が表示されたりされなかったりするので、ページネーションをデザインする際はそういう変化する要素を確認するようにしましょう。



