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

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

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

Q&A

解決済

1回答

257閲覧

Slick.jsを使用して3枚の画像を自動再生、無限ループさせる挙動について

chibikurochan

総合スコア6

0グッド

0クリップ

投稿2024/06/05 06:00

実現したいこと

実現したいこと:
ライブラリ「Slick.js」を使用して、3枚の画像を無限ループさせたいが、自動再生されない、かつ3枚目の画像が左側に表示されない問題を解消したい。

イメージ(参考にしたサイト):
https://coco-factory.jp/ugokuweb/move01/6-1-7/

HTML

1<head> 2 <link 3 rel="stylesheet" 4 type="text/css" 5 href="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css" 6 /> 7 <link rel="stylesheet" href="./assets/css/common.css" /> 8</head> 9 10<section class="slider_wrap"> 11 <ul class="slider"> 12 <li> 13 <img 14 src="./assets/img/1-1.jpg" 15 alt="" 16 /> 17 </li> 18 <li> 19 <img 20 src="./assets/img/1-2.jpg" 21 alt="" 22 /> 23 </li> 24 <li> 25 <img 26 src="./assets/img/1-3.jpg" 27 alt="" 28 /> 29 </li> 30 </ul> 31 </section> 32 33<!-- 以下はbodyタグの手前に書いています --> 34<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> 35<script src="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script> 36<script src="./assets/js/common.js"></script>

SCSS(common.css)

1section { 2&.white_styling { 3 .slider { 4 width: 100%; 5 margin: 0 auto; 6 7 .slick-list { 8 &.draggable { 9 padding: 0 !important; 10 } 11 } 12 13 img { 14 width: 67.18vw; /*スライダー内の画像を60vwにしてレスポンシブ化*/ 15 height: auto; 16 } 17 18 .slick-slide { 19 transform: scale(0.836); /*左右の画像のサイズを80%に*/ 20 transition: all 0.5s; /*拡大や透過のアニメーションを0.5秒で行う*/ 21 opacity: 0.5; /*透過50%*/ 22 23 &.slick-center { 24 transform: scale(1); /*中央の画像のサイズだけ等倍に*/ 25 opacity: 1; /*透過なし*/ 26 } 27 } 28 } 29 30 // 矢印 31 .slick-prev, 32 .slick-next { 33 display: none; 34 } 35 } 36}

JavaScript

1//スライダー 2$('.slider').slick({ 3 autoplay: true, //自動的に動き出すか。初期値はfalse。 4 infinite: true, //スライドをループさせるかどうか。初期値はtrue。 5 speed: 500, //スライドのスピード。初期値は300。 6 slidesToShow: 3, //スライドを画面に3枚見せる 7 slidesToScroll: 1, //1回のスクロールで1枚の写真を移動して見せる 8 // prevArrow: '<div class="slick-prev"></div>', //矢印部分PreviewのHTMLを変更 9 // nextArrow: '<div class="slick-next"></div>', //矢印部分NextのHTMLを変更 10 centerMode: true, //要素を中央ぞろえにする 11 variableWidth: true, //幅の違う画像の高さを揃えて表示 12 dots: false, //下部ドットナビゲーションの表示 13});

発生している問題・分からないこと

ライブラリ「Slick.js」を使用して、3枚の画像を無限ループさせたいが、どうすれば自動再生されるか、かつ3枚目の画像が左側に表示されるかがわからない。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

試したこと:
・CDNファイルの読み込み位置が問題ないか、確認 → 問題なし
・jQueryが読み込まれているか確認 → 問題なし
・HTMLに記述しているクラス名と、CSSファイル、JSファイルに記述しているクラス名が一致しているかどうか確認 → 問題なし
・ドキュメントが完全に読み込まれてからSlickスライダーを初期化するよう、jsの記述を以下のように修正してみた → 変化なし

JavaScript

1$(document).ready(function(){ 2 $('.slider').slick({ 3 autoplay: true, //自動的に動き出すか。初期値はfalse。 4 infinite: true, //スライドをループさせるかどうか。初期値はtrue。 5 speed: 500, //スライドのスピード。初期値は300。 6 slidesToShow: 3, //スライドを画面に3枚見せる 7 slidesToScroll: 1, //1回のスクロールで1枚の写真を移動して見せる 8 // prevArrow: '<div class="slick-prev"></div>', //矢印部分PreviewのHTMLを変更 9 // nextArrow: '<div class="slick-next"></div>', //矢印部分NextのHTMLを変更 10 centerMode: true, //要素を中央ぞろえにする 11 variableWidth: true, //幅の違う画像の高さを揃えて表示 12 dots: false, //下部ドットナビゲーションの表示 13 }); 14});

補足

jsの読み込みエラーは発生していない。

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

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

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

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

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

guest

回答1

0

自己解決

<img>タグを含む<li>要素を4つ以上に増やしたところ、正常に自動再生され、左側にも画像が表示されました!
単純に、スライドさせる要素が不足していたことが原因だったようです。
なので、スライドさせたい画像は実質3つだとしても、4つ以上ないと自動再生はされない、で理解しました。

投稿2024/06/05 09:01

chibikurochan

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問