質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

9869閲覧

Swiperの無限スライダー作成時のloop使用における、最後のスライドから最初のスライドへ繋がる時空白ができて表示が遅くなる

Star16

総合スコア1

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/10/03 17:04

前提

swiperを使用しスライダーを作っています。
4枚のスライドを使用し、中央に3枚、4枚目は両端に半分ずつ切れた状態で表示しています。
slidesPerView: 4で4枚表示としています。
centeredSlidesを使用し1枚目が中央に来るようにすることで4枚目を両端切れ表示しています。
autoplayで5秒おきにスライドが動くようにしています。

実現したいこと

4枚目のスライドの後ろに1枚目のスライドがすぐに来るように、loopで途切れずに無限ループさせたいと思っています。

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

loopを使っていても4枚目スライドの後ろのスペースが見えるようになるまで動くと空白となってしまい、4枚目が左の半分まで到達したと同時に後ろの1、2、3枚目のスライドが表示されるようになります。
(表示されるのがだいぶ遅い)

該当のソースコード

Javascript

<script> const swiper = new Swiper(".swiper", { loop:true, slidesPerView: 4, autoplay: { delay: 5000, }, spaceBetween: 50, centeredSlides: true, }); </script>

試したこと

slidesPerView: autoや loopAdditionalSlides: 2,など、
無限スライダーについてやloopバグなどに関する情報を調べ試してみましたが空白部分ができてしまい、表示されるまで遅くなってしまうケースの解決方法は見つけることができませんでした。

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

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

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

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

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

Cocode

2022/10/03 17:26 編集

SwiperにかかわるHTMLとCSSもご提供いただければ幸いです…! 画像はこちら https://placehold.jp/ をお使いください! 1)「Advanced」の設定項目を調整 ・サイズ ・画像に表示するテキスト(それぞれ1、2、3、4にしたらいいと思います) ・背景色もそれぞれ変えていただけると見やすくて助かります 2)画像を生成するをクリック 3)imgタグの画像のパスを、生成したURLに書き換える バグを再現したいのです。
Cocode

2022/10/04 04:12

> 1枚目が中央に来るようにすることで4枚目を両端切れ表示しています。 1枚目が中央に来るように開始したら (3) 4 1 2 (3) と、3が両端切れになるような気がします。 4が両端切れでした、 (4) 1 2 3 (4) と、2が中央スタートでしょうか? ひとまず回答欄で後者の方でご提案させていただいておりますが、HTMLが違和感あるので、前者の方が良さそうです。
guest

回答1

0

ベストアンサー

どんなレイアウトがご希望かあまり理解できていなくて申し訳ありません…想像で作ってみました。
こんな感じの見た目で大丈夫でしょうか?
Swiper Test Image

コード例

javascript

1const swiper = new Swiper('.swiper', { 2 autoplay: { 3 delay: 5000, 4 }, 5 centeredSlides: true, // アクティブ中の画像中央寄せ 6 centeredSlidesBounds: true, // スライド同士の余白をなくす 7 loop: true, 8 slidesPerView: 1.5, // アクティブ画像1枚まるまる、サブ画像2枚はチラ見せ 9});

css

1body { 2 margin: 0; 3 padding: 0; 4} 5 6h1 { 7 text-align: center; 8} 9 10img { 11 width: 100%; 12 margin: 0; 13 padding: 0; 14 vertical-align: bottom; 15} 16 17.swiper { 18 width: 100%; 19 /* ↓↓↓大きい画面でブラウザ最大化された時の対策 */ 20 max-width: 1500px; 21 margin: 0 auto; 22 overflow: hidden; 23}

html

1<!-- Swiper CDN --> 2<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.css" /> 3<script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script> 4 5<h1>Swiper Test</h1> 6 7<!-- Slider main container --> 8<div class="swiper"> 9 <div class="swiper-wrapper"> 10 <div class="swiper-slide"> 11 <img src="https://placehold.jp/005A5B/ffffff/600x300.png?text=1" alt="1"> 12 </div> 13 <div class="swiper-slide"> 14 <img src="https://placehold.jp/007369/ffffff/600x300.png?text=2" alt="2"> 15 </div> 16 <div class="swiper-slide"> 17 <img src="https://placehold.jp/008C72/ffffff/600x300.png?text=3" alt="3"> 18 </div> 19 <div class="swiper-slide"> 20 <img src="https://placehold.jp/02A676/ffffff/600x300.png?text=4" alt="4"> 21 </div> 22 </div> 23</div>

またはこちらの見た目でしょうか?
イメージ説明

javascript

1const swiper = new Swiper('.swiper', { 2 autoplay: { 3 delay: 4000, 4 }, 5 centeredSlides: true, 6 centeredSlidesBounds: true, 7 loop: true, 8 slidesPerView: 3.5, 9});
  • 1を中央ではなく左から開始するために、HTMLで画像の順番を2→3→4→1にしています。
  • CSSは1つ目のスライダーと共通です。

centeredSlidesBounds
If true, then active slide will be centered without adding gaps at the beginning and end of slider. Required centeredSlides: true. Not intended to be used with loop or pagination

trueのとき、アクティブ状態のスライドが両隣の隙間なしに中央に配置されます。centeredSlidesがtrueであることが必須です。このパラメーターはループやページネーションには作用しません。

公式ドキュメントより引用

とありますので、質問者様の隙間もこれで消えてくれないかな…と期待しています。

投稿2022/10/03 18:46

編集2022/10/03 23:18
Cocode

総合スコア2314

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

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

Cocode

2022/10/03 23:22

teratailへの接続が悪く何度か回答の編集投稿ボタンを押してしまいました。何度も同じ変更通知がいってしまっていたら申し訳ございません。
Star16

2022/10/09 08:09

体調を崩してしまい返答が遅れてしまいました。申し訳ございません。 CSSによる単純ミスで修正したところ、無事動作することができました。 具体的なアドバイス頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問