質問するログイン新規登録

Q&A

解決済

1回答

1335閲覧

javascriptのスワイパーで空白になる

shinya117

総合スコア10

0グッド

0クリップ

投稿2023/08/21 03:06

0

0

実現したいこと

JavaScriptのSwiperで、画像4枚、表示する枚数3枚で自動スワイプしたい。

前提

JavaScriptで、画像4枚、表示する枚数3枚で、自動スワイプされる機能を作成しています。
イメージは下記です。
イメージ説明

発生している問題・エラーメッセージ

画像を4枚挿入しているのに、
画像を3枚表示にすると、1つ空白ができて正常に動作しない。
イメージ説明

HTMLソースコード

html

1<!-- Swiper-スワイパー --> 2 <div class="eyecatch"> 3 <div class="swiper"> 4 <!-- Additional required wrapper --> 5 <div class="swiper-wrapper"> 6 <!-- Slides --> 7 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 8 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 9 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 10 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 11 12 13 </div> 14 <!-- If we need navigation buttons --> 15 <div class="swiper-button-prev"></div> 16 <div class="swiper-button-next"></div> 17 18 <!-- If we need scrollbar --> 19 <div class="swiper-scrollbar"></div> 20 </div> 21 <!-- If we need pagination --> 22 <div class="swiper-pagination"></div> 23 </div>

PerViewの数は、画像*2より大きい数でないといけないという記事を見たので
試しに、画像を12枚にすると、正常動作となりました。
ただ、12枚の場合、同じ画像は4枚しか使用しないため、ページネーションも4にしたいんです。
イメージ説明

HTMLソースコード

html

1<!-- Swiper-スワイパー --> 2 <div class="eyecatch"> 3 <div class="swiper"> 4 <!-- Additional required wrapper --> 5 <div class="swiper-wrapper"> 6 <!-- Slides --> 7 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 8 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 9 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 10 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 11 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 12 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 13 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 14 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 15 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 16 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 17 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 18 <div class="swiper-slide"><img src="https://placehold.jp/1000x1000.png" alt=""></div> 19 20 </div> 21 <!-- If we need navigation buttons --> 22 <div class="swiper-button-prev"></div> 23 <div class="swiper-button-next"></div> 24 25 <!-- If we need scrollbar --> 26 <div class="swiper-scrollbar"></div> 27 </div> 28 <!-- If we need pagination --> 29 <div class="swiper-pagination"></div> 30 </div>

空白を消す方法、スライドは12の場合でももしくはページネーションを4つにする方法がございましたらご教授ください。

該当のソースコード

JavaScript

1/* スワイパー */ 2const swiper = new Swiper('.swiper', { 3 // Optional parameters 4 speed: 600, // スライドの切り替えスピード 5 loop: true, 6 loopAdditionalSlides: 1, 7 followFinger: false, 8 slidesPerView: 1, 9 spaceBetween: 40, 10 centeredSlides: true, // スライドを中央寄せにする 11 autoHeight: true, 12 gradCursor: true, 13 autoplay: { 14 delay: 3000,//1秒後にスライド 15 disableOnInteraction: false,//ユーザーアクション後の自動再生を続ける 16 }, 17 allowTouchMove: true, 18 breakpoints: {767:{slidesPerView:3,spaceBetween:10}}, 19 20 // If we need pagination 21 pagination: { 22 el: '.swiper-pagination', 23 type: 'bullets', 24 clickable: true, 25 dynamicBullets: true, 26 dynamicMainBullets: 4, 27 }, 28 29 // Navigation arrows 30 navigation: { 31 nextEl: '.swiper-button-next', 32 prevEl: '.swiper-button-prev', 33 }, 34 35 // And if we need scrollbar 36 scrollbar: { 37 el: '.swiper-scrollbar', 38 }, 39});

試したこと

4枚から12枚にしたり、
ページネーションのdynamicBullets: true,やdynamicMainBullets: 4,を使用してみましたが意図したものではありませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2023/08/21 03:31

バージョン8以前であれば動作すると思いますが、それではダメということですよね?
shinya117

2023/08/21 04:34

ご回答ありがとうございます。 そうなんですね。バージョン8以前であれば動作するのは初めて知りました。 ありがとうございます。 現在のバージョンは10ですので、10で意図した動作ができるのが一番理想的ですが、不可能であれば 8以前でも、意図した動作が実現できれば大丈夫です。 10では難しいでしょうか?
guest

回答1

0

ベストアンサー

ちょっとアドホックな方法になりますし、クリックした時の挙動が変ですが、画像を8枚置いて以下はどうでしょうか。

css

1.swiper-pagination-bullet-active+.swiper-pagination-bullet+.swiper-pagination-bullet+.swiper-pagination-bullet+.swiper-pagination-bullet { 2 opacity: var(--swiper-pagination-bullet-opacity, 1); 3 background: var(--swiper-pagination-color, var(--swiper-theme-color)); 4} 5 6.swiper-pagination-bullet:nth-child(-n+4) { 7 display: none; 8}

js

1pagination: { 2 el: '.swiper-pagination', 3 type: 'bullets', 4 clickable: true, 5 // dynamicBullets: true, 6 // dynamicMainBullets: 4, 7},

または、bullet を諦めて、こうするとどうでしょうか。

js

1pagination: { 2 el: '.swiper-pagination', 3 type: 'custom', 4 clickable: true, 5 renderCustom: function (swiper, current, total) { 6 switch (current % 4) { 7 case 1: 8 return `●〇〇〇`; 9 case 2: 10 return `〇●〇〇`; 11 case 3: 12 return `〇〇●〇`; 13 case 0: 14 return `〇〇〇●`; 15 } 16 } 17},

投稿2023/08/21 06:33

編集2023/08/21 08:28
Lhankor_Mhy

総合スコア37570

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinya117

2023/08/23 10:23

とても画期的な発想をご提供していただきありがとうございます。 おかげさまで意図した動作ができました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問