Swiper.jsでページネーションボタンをスライド外に配置できない
解決済
回答 2
投稿
- 評価
- クリップ 1
- VIEW 13K+
Swiper.jsを使ってスライダーをコーディングしていますが、ページネーションボタンがスライドの外に配置できず苦戦しております。
やりたいことは、ページネーションボタンをスライドの外(下側)に配置することです。
画像はhttps://garigaricode.com/swiper_navigation/#sample4の記事から拝借いたしました。
画像を引用した先の記事を読んで書いてみましたが、同じように動作せず、スライドの中にページネーションボタンがある状態から変わりませんでした。
https://garigaricode.com/swiper_navigation/#sample4
書いているコード該当部分は以下です。
htmlとJSです。
<div class="swiper-parent">
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide"></div>
<div class="swiper-slide"></div>
<div class="swiper-slide"></div>
<div class="swiper-slide"></div>
</div>
<div id="swiper-pagination"></div>
</div>
</div>
<!-- Swiper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/js/swiper.min.js"></script>
<!-- Initialize Swiper -->
<script>
var mySwiper = new Swiper('.swiper-container', {
pagination: {
el: '.swiper-pagination',
type: 'bullets',
clickable: true
}
});
</script>
CSSです。
.swiper-parent {
position: relative;
}
.swiper-container {
width: 100%;
padding-bottom: 150px;
height: 300px;
box-sizing: content-box;
}
.swiper-wrapper .swiper-slide {
color: #fff;
width: 100%;
height: 100%;
text-align: center;
line-height: 250px;
padding-top: 100px;
}
#swiper-pagination{
margin-bottom: -330px;
}
.swiper-slide:nth-child(4n+1) {
background-color: #008BBB;
}
/* 4の倍数+2枚目のスライドのスタイル(2枚目、6枚目…) */
.swiper-slide:nth-child(4n+2) {
background-color: #E13239;
}
/* 4の倍数+3枚目のスライドのスタイル(3枚目、7枚目…) */
.swiper-slide:nth-child(4n+3) {
background-color: #1F1762;
}
/* 4の倍数+4枚目のスライドのスタイル(4枚目、8枚目…) */
.swiper-slide:nth-child(4n+4) {
background-color: #BEDAE5;
}
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+4
質問者さんが参考にしたページのコードをそのままコピペすると、以下のようになり、正常に動作することが確認できました。写し間違えていないかどうか、確認してみてはいかがでしょうか?
<!doctype html>
<html lang="ja">
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.4.1/css/swiper.min.css">
<meta charset="UTF-8">
<title>タイトル</title>
<style>
/* 全体のスタイル */
.swiper-wrapper {
width: 100%;
height: 250px;
}
/* 全スライド共通スタイル */
.swiper-slide {
color: #ffffff;
width: 100%;
height: 100%;
text-align: center;
line-height: 250px;
}
/* 4の倍数+1枚目のスライドのスタイル(1枚目、5枚目…) */
.swiper-slide:nth-child(4n+1) {
background-color: #EECB27;
}
/* 4の倍数+2枚目のスライドのスタイル(2枚目、6枚目…) */
.swiper-slide:nth-child(4n+2) {
background-color: #E13239;
}
/* 4の倍数+3枚目のスライドのスタイル(3枚目、7枚目…) */
.swiper-slide:nth-child(4n+3) {
background-color: #1F1762;
}
/* 4の倍数+4枚目のスライドのスタイル(4枚目、8枚目…) */
.swiper-slide:nth-child(4n+4) {
background-color: #BEDAE5;
}
/* Swiperの親要素 */
.swiper-parent {
position: relative;
}
/* Swiper本体 */
.swiper-container {
width: calc(100% - 100px); /* ☆前・次ページボタンの幅をそれぞれ50pxとして、その分を引く */
padding-bottom: 50px; /* ★ページネーション・スクロールバー分の余白50pxを下に取る */
box-sizing: content-box;
}
/* 前・次スライドボタンの縦位置調整(スライドの高さの中央に合わせる) */
.swiper-button-prev, .swiper-button-next {
top: calc((100% - 50px) * 0.5); /* ☆★ページネーション・スクロールバー(50px)を除く縦位置の中央(=スライドの高さの中央)に一旦配置 */
margin-top: -22px; /* ★ボタンの高さ(44px)の半分のネガティブマージンで上に少しずらす */
}
</style>
</head>
<body>
<div class="swiper-parent">
<!-- Swiper START -->
<div class="swiper-container">
<!-- メイン表示部分 -->
<div class="swiper-wrapper">
<!-- 各スライド -->
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">Slide 3</div>
<div class="swiper-slide">Slide 4</div>
</div>
<!-- ページネーション -->
<div class="swiper-pagination"></div>
<!-- スクロールバー -->
<div class="swiper-scrollbar"></div>
</div>
<!-- Swiper END -->
<!-- 前ページボタン -->
<div class="swiper-button-prev"></div>
<!-- 次ページボタン -->
<div class="swiper-button-next"></div>
</div>
<!-- Swiper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/js/swiper.min.js"></script>
<!-- Initialize Swiper -->
<script>
var mySwiper = new Swiper('.swiper-container', {
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
pagination: {
el: '.swiper-pagination',
type: 'bullets',
clickable: true
},
scrollbar: {
el: '.swiper-scrollbar',
draggable: true,
}
});
</script>
</body>
</html>
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
HTML・CSS共に、swiper-pagination
を「id」で割り当てていますが、「class」に戻してみてください。「Swiper.js」本体では「class」で設定されているので、「id」を割り当てると、「別セレクタ」となり、無効になります。
ページネーション部を外に出すのは、.swiper-container
で取っている下側のパディング内に収めます。それ以上の値を入れても、.swiper-container
にCSSでoverflow:hidden;
が設定されているので、はみ出す部分は表示されません。
※この場合はマイナス値全部
提示されたコードには、.swiper-container
のoverflow:hidden;
は設定されていませんが、「Swiper.js」本体に設定されています。
「s8_chu」さんの回答にあるように誤記述の可能性があると思いますので、再度「カスタマイズ範囲」を確認されると良いかと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.20%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/10/07 11:44
2018/10/07 12:36 編集
質問者さんが、実際に上記リンク先で動作確認をした場合も、正常に動作することを確認できますか?
もし出来たのであれば、今回の問題の原因は、「参考サイトからコードを写し間違えていたこと」だと思います。
2018/10/07 13:43