実現したいこと
jQueryのスライダーを実装したいです
発生している問題・分からないこと
コードを書いたのですが、サイトに反映されません。
「スライダー作成」のところから下のコードが反応しません。
エラーメッセージ
error
1エラーメッセージは出ません。
該当のソースコード
jQuery
1$(function () { 2 // 1. AOSの初期化(ここに入れることでHTML読み込み後に実行される) 3 AOS.init({ 4 offset: 100, // 要素がどれくらい見えたら実行するか 5 duration: 800, // アニメーションの時間 6 easing: 'ease-out', 7 once: true // 1回だけ実行 8 }); 9 10 //スムーススクロール 11 $("a[href^='#']:not([href='#'])").click(function () { 12 var target = $($(this).attr("href")).offset().top; 13 14 //70px減らす 15 target -= 70; 16 17 //ターゲットに移動 18 $("html,body").animate({ scrollTop: target }, 500); 19 return false; 20 }); 21 22 //フォームバリデーション 23 // 送信ボタンを変数に入れる 24 const $submitBtn = $('.fv-submit-btn'); 25 26 // フォーム内の入力が変わるたびにチェック 27 $('.fv-form input').on('change keyup', function () { 28 // 各項目の値を取得 29 let lastName = $('.fv-form input[placeholder="介護"]').val(); 30 let firstName = $('.fv-form input[placeholder="太郎"]').val(); 31 let company = $('.fv-form input[placeholder="株式会社CareSend"]').val(); 32 let email = $('.fv-form input[type="email"]').val(); 33 let tel = $('.fv-form input[type="tel"]').val(); 34 35 // すべてが空じゃないかチェック 36 if ( 37 lastName !== "" && 38 firstName !== "" && 39 company !== "" && 40 email !== "" && 41 tel !== "" 42 ) { 43 // 全部入ってたらボタンを活性化 44 $submitBtn.prop('disabled', false); 45 $submitBtn.css('opacity', '1'); // 見た目も「押せる感」を出す 46 } else { 47 // 一つでも空ならボタンを無効化 48 $submitBtn.prop('disabled', true); 49 $submitBtn.css('opacity', '0.5'); // 押せないときは薄くする 50 } 51 }); 52 53 //ボタンのテキスト変更 54 $('.fv-submit-btn').click(function () { 55 $(this).css('font-size', '16px'); 56 $(this).html("資料ダウンロードありがとうございました"); 57 }); 58 59 // --- スライダー作成 --- 60 var list = $('.logo-slider .slider-list'); 61 var item = $('.logo-slider .slider-item'); 62 63 // 1. 複製して2セットにする 64 list.append(item.clone()); 65 66 $(window).on('load', function () { 67 setTimeout(function () { 68 // 2. 1枚分の移動距離を正確に測る 69 var itemWidth = item.outerWidth(true); 70 71 // 【確認用】F12のコンソールに数字が出るかチェック 72 console.log('移動距離:', itemWidth); 73 74 // 3. 画像を一枚分動かす関数 75 function startScroll() { 76 list.animate({ "marginLeft": -itemWidth }, 3000, "linear", function () { 77 // 4. アニメーション終了後、先頭の子供を特定 78 var target = list.find('.slider-item:first-child'); 79 80 // 5. ターゲットを最後尾に移動(append) 81 list.append(target); 82 83 // 6. リストの左余白を0に戻す 84 list.css("marginLeft", 0); 85 86 // 7. ループ(自分自身をもう一度呼ぶ) 87 startScroll(); 88 }); 89 } 90 91 // 8. 実行 92 startScroll(); 93 }); 94 }); 95});
html
1<!--スライダー--> 2 <section class="logo-slider"> 3 <div class="inner"> 4 <h1 class="title" data-aos="fadeup"> 5 多くのお客様に選ばれ続けています 6 </h1> 7 <div class="img-area"> 8 <img src="images/jiseki 1.png" alt="実績の写真"> 9 <img src="images/jiseki-02 1.png" alt="実績の写真"> 10 </div> 11 <!--スライダー--> 12 <div class="slider-container"> 13 <ul class="slider-list"> 14 <li class="slider-item"><img src="images/logo01.png" alt="社名"></li> 15 <li class="slider-item"><img src="images/logo02.png" alt="社名"></li> 16 <li class="slider-item"><img src="images/logo03 1.png" alt="社名"></li> 17 <li class="slider-item"><img src="images/logo04 1.png" alt="社名"></li> 18 <li class="slider-item"><img src="images/logo05 1.png" alt="社名"></li> 19 </ul> 20 </div> 21 </div> 22 </section> 23
css
1/*スライダーセクション*/ 2.logo-slider { 3 padding-top: 80px; 4} 5 6.logo-slider .inner { 7 max-width: 1536px; 8 width: 100%; 9 margin: 0 auto; 10} 11.logo-slider .title { 12 font-size: 32px; 13 text-align: center; 14 margin-bottom: 40px; 15} 16 17.logo-slider .img-area { 18 display: flex; 19 align-items: center; 20 justify-content: center; 21 gap: 84px; 22 margin-bottom: 64px; 23} 24 25.logo-slider .img-area img{ 26 width: 428px; 27 height: auto; 28} 29 30/*スライド設定*/ 31.logo-slider .slider-container { 32 overflow: hidden; 33 width: 100%; 34} 35 36.logo-slider .slider-list { 37 display: flex; 38 margin: 0; 39 padding: 0; 40 list-style: none; 41 width: max-content; /* 中身のサイズを維持して横長に */ 42 min-width: 100%; /* ★これを追加! */ 43 position: relative; /* ★これもあると安心 */ 44} 45 46.logo-slider .slider-item { 47 width: 248px; /* 固定サイズ */ 48 height: 99px; 49 flex-shrink: 0; /* 画面幅が狭くても画像を潰さない */ 50 margin: 0 40px; /* 隙間 */ 51 box-sizing: content-box; 52} 53 54.logo-slider .slider-item img { 55 width: 100%; 56 height: 100%; 57 object-fit: contain; 58}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Geminiやvscodeのaiに聞いても原因がわかりませんでした。
補足
数時間も格闘したので解決していただければ本当にありがたいです。よろしくお願いいたします。