「Webサイトからお問い合わせが来ない…」とお悩みの方必見!
当サイトのノウハウを詰め込んだ『Web集客の無料ガイド』をご提供
ソースコード
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<title>Flexboxテスト</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Flexbox レスポンシブPagination</h1>
<ul class="pager">
<li><a href=""><<</a></li>
<li><a href=""><</a></li>
<li><a href="">1</a></li>
<li><a href="">2</a></li>
<li><a href="">3</a></li>
<li><a href="">4</a></li>
<li class="active"><a href="">5</a></li>
<li><a href="">6</a></li>
<li><a href="">7</a></li>
<li><a href="">8</a></li>
<li><a href="">9</a></li>
<li><a href="">></a></li>
<li><a href="">>></a></li>
</ul>
</body>
</html>
css
.pager{
/* For IE */
-js-display: flex;
display: flex;
}
.pager li{
list-style-type: none;
flex: 1;
}
.pager li a {
display: flex;
justify-content: center;
align-items: center;
}
@media only screen and ( max-width: 630px ) {
/* 全てのli要素を消す */
.pager li {
position: absolute;
top: -9999px;
left: -9999px;
}
/* 必要なli要素を消す */
.pager li.active,
.pager li:first-of-type,
.pager li:last-of-type,
.pager li:nth-of-type(2),
.pager li:nth-last-of-type(2){
position: static;
top: initial;
left: initial;
}
}
.pager li {
/* For IE */
display: flex;
justify-content: center;
background-color: #2071B2;
}
.pager a {
/* For IE */
flex: 1;
height:44px;
text-decoration:none;
color: #fff;
}
/* Active 以外のhover */
.pager li:not([class*="active"]) a:hover {
background-color: rgba(255,255,255,.2);
}
/* Activeのスタイル */
.pager li.active a {
background-color: rgba(255,255,255,.65);
color: #000;
font-weight: bold;
}
ul {
-webkit-padding-start: 0px;
}
解説
.pager{
display: flex;
}
.pager li{
flex: 1;
}
「.page」に「display : flex」を指定し、<ul class="pager">内の<li>をFlexbox Itemにしています。
Flexbox Itemの<li>は、「flex:1」により、横幅いっぱいまで伸びます。
.pager li a {
display: flex;
justify-content: center;
align-items: center;
}
aタグに対してもFlexboxを指定し、「justify-content: center;」と「align-items: center;」を指定し、a要素を上下中央に配置しています。
@media only screen and ( max-width: 630px ) {
/* 全てのli要素を消す */
.pager li {
position: absolute;
top: -9999px;
left: -9999px;
}
/* 必要なli要素を表示 */
.pager li.active,
.pager li:first-of-type,
.pager li:last-of-type,
.pager li:nth-of-type(2),
.pager li:nth-last-of-type(2){
position: initial;
top: initial;
left: initial;
}
}
メディアクエリを使い、画面サイズが630px以下の場合に、一旦<li>を消し、その後に必要な<li>要素を表示しています。
「li:nth-of-type(2)」はcss3 のセレクタで、<li>要素の2番目という意味です。
詳しくは解説動画を参照ください。
関連記事
引用
この記事の一部のソースコードは下記サイトを参照しております。
http://codepen.io/iamjustaman/pen/YPLPNR
