実現したいこと
Wordpress内で swiper を 永続ループさせたい
発生している問題・分からないこと
よろしくお願いいたします。
swiperは稼働しているのですが、
<div class="swiper-slide">1枚目の画像</div> <div class="swiper-slide">2枚目の画像</div> <div class="swiper-slide">3枚目の画像</div> と書いた場合、3枚目の画像まで表示されると右が空白になり一旦画像の連鎖が終わり、ある程度流れるとその3枚目の次(右側)に1枚目の画像が現れて左にスライドし、次に2枚目の画像が現れて左にスライドし、を繰り返すようになります。その現れた画像の右側は空白で・・・、 という具合に、次々に画像が現れては来るのですが、一本の帯のように永続ループにはなりません。画像の数を、2倍から5倍まで貼り付けてみたのですが結局、6枚なり15枚なりがスライドして終わったら右は空白になってしまい、1巡したら終わってその次に1枚ずつ次の画像が現れて左にスライドしてゆき右の空白は有ったままです。
下の画像のように、はじめは上のように画面全体を使って左にスライドしてくれているのですが、設定枚数が終わることになると、下のように、右側は空白になり、見えている右の画像がセンターあたりで現れて左にスライドしてまた右に新たな画像が現れて、の繰り返しです。
エラーメッセージ
error
1エラーメッセージは出ていません。
該当のソースコード
functions.php;
1function my_script_init() 2 3 //スワイパー読み込み 4 wp_enqueue_script('swiper', '//unpkg.com/swiper@11/swiper-bundle.min.js', "", "1.0.1", true); 5 6 wp_enqueue_style('swiper', 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css'); 7 8 //スワイパーここまで 9 10 11 wp_enqueue_style('style-css', get_template_directory_uri() . '/css/style.css', array(), '1.0.1'); 12 13 wp_enqueue_script('main-js', get_template_directory_uri() . '/js/script.js', array('jquery'), '1.0.1', true); 14} 15add_action('wp_enqueue_scripts', 'my_script_init');
script.js
1$(function () { 2 3//その他色々 4 5const swiper2 = new Swiper(".swiper2", { 6 direction: 'horizontal', 7 loop: true, 8 effect: "slide", 9 speed: 3000, 10 allowTouchMove: false, 11 spaceBetween: 34, 12 autoplay: { 13 delay: 0, 14 }, 15});
front
1<div class="slider"> 2 <div class="slider__inner"> 3 <div class="slider__slider"> 4 <div class="swiper2"> 5 <div class="swiper-wrapper"> 6 7 <div class="swiper-slide"> 8 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide01.jpg")); ?>" class="slide01-img" alt=""> 9 </div> 10 <div class="swiper-slide"> 11 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide02.jpg")); ?>" class="slide02-img" alt=""> 12 </div> 13 <div class="swiper-slide"> 14 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide03.jpg")); ?>" class="slide03-img" alt=""> 15 </div> 16 17 <div class="swiper-slide"> 18 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide01.jpg")); ?>" class="slide01-img" alt=""> 19 </div> 20 <div class="swiper-slide"> 21 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide02.jpg")); ?>" class="slide02-img" alt=""> 22 </div> 23 <div class="swiper-slide"> 24 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide03.jpg")); ?>" class="slide03-img" alt=""> 25 </div> 26 27 </div> 28 </div> 29 </div> 30 </div>
style.css
1.slider { 2 width: 100%; 3 height: 440px; 4 margin-top: 101px; 5 position: relative; 6} 7 8.slider__inner { 9 display: flex; 10 position: relative; 11 width: 100%; 12 height: inherit; 13 object-fit: cover; 14 overflow: hidden; 15} 16 17.slider__slider, 18.swiper2-slide img { 19 aspect-ratio: 506/393; 20 width: 506px; 21 height: 393px; 22 object-fit: cover; 23} 24 25.swiper-slide img { 26 height: 100%; 27 width: 100%; 28 object-fit: cover; 29} 30 31.slide01-img { 32 height: 393px; 33 width: 506px; 34 object-fit: cover; 35} 36 37.slide02-img { 38 height: 393px; 39 width: 506px; 40 object-fit: cover; 41} 42 43.slide03-img { 44 height: 393px; 45 width: 506px; 46 object-fit: cover; 47} 48 49.swiper { 50 margin-left: auto; 51 margin-right: auto; 52 position: relative; 53 overflow: hidden; 54 list-style: none; 55 padding: 0; 56 z-index: 1; 57} 58 59.swiper-wrapper { 60 transition-timing-function: linear; 61} 62
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
swiperのカスタマイズ用オプションを.jsに順番に加筆してみたのですがどれを入れ込んでもうまくいきませんでした。(参照:https://junpei-sugiyama.com/swiper-option/)
他、様々なswiper解説記事を巡ったのですが、今のところ解決に至りません状況です。
尚、slidesPerView: , を入れてみたらどうかとのアドバイスをいただきましたところ、
このオプションを記述しない、または slidesPerView: 1,にしますと画像の大きさは希望通りになりますが、
slidesPerView: 3,にしますと下のように画像の大きさが小さくなってしまい、
slidesPerView: 4,のように数字を大きくしますと画像の大きさが、より小さくなってしまう、という現象が起こります。
補足
コードにおいて swiper2 となっているのは、1ページ内に3つのswiperを設置しているためです。
swiper1はfadeの効果をループさせ、swiper3はループを止めてページネーションボタンを押すことで左右に画像が横移動しそれぞれ画像を押下することで詳細(投稿)ページに移行する仕組みにしています。
swiper1とswiper3は正常に稼働しております。
画像がそれぞれ上下に凸凹しているのは、偶数番画像にmargin-topを指定しているデザイン指定によるものです。

あなたの回答
tips
プレビュー