実現したいこと
同じ場所でカードが重なる表現をしたく、下記YOUTUBEを参考にコードを書きました。
https://youtu.be/e8SdVY-l8ZE?si=H_hjRhFUgq-RKHui
発生している問題・分からないこと
pin機能がうまく機能していないのか、スクロールをしても要素が重なりません。
エラーメッセージ
error
1Uncaught ReferenceError: scrollTrigger is not defined
該当のソースコード
JavaScript
1gsap.registerPlugin(scrollTrigger); 2 3// lenis 4const lenis = new Lenis(); 5lenis.on('scroll', scrollTrigger.update); 6gsap.ticker.add((time) => { 7 lenis.raf(time * 1000) 8}); 9 10gsap.ticker.lagSmoothing(0); 11 12//animation 13const cardsWrapper = gsap.utils.toArray(".cards-item"); 14const cardsEl = gsap.utils.toArray(".cards-el"); 15 16cardsWrapper.forEach((e, i) => { 17 const card = cardsEL[i]; 18 let scale = 1, rotate = 0; 19 if(i !==cardsEl.lenght - 1) { 20 scale = 0.9 + 0.025 * i; 21 rotate = -10; 22 } 23 gsap.to(card, { 24 scale: scale, 25 rotationX: rotate, 26 transformOrigin: "top center", 27 ease: 'none', 28 scrollTrigger: { 29 trigger: e, 30 star: "top" + (70 + 40 * i), 31 end: "bottom +=650px", 32 endTrigger: ".end-anim", 33 pin: e, 34 pinSpacing: false, 35 scrub: true 36 } 37 }) 38}); 39
CSS
1.voice-card { 2 position: relative; 3 width: 100%; 4 min-height: 100vh; 5 z-index: 2; 6} 7.cards { 8 width: 70%; 9 margin: 0 auto; 10 padding: 0 50px; 11} 12.cards-item { 13 width: 100%; 14 perspective: 500px; 15 margin-bottom: 50px; 16} 17.cards-item:last-child { 18 margin-bottom: 0; 19} 20.cards-el { 21 width: 100%; 22 height: 400px; 23} 24.cards-el-wrapper { 25 display: flex; 26 align-items: center; 27 width: 100%; 28 height: 100%; 29 gap: 40px; 30 padding: 45px; 31 border-radius: 4px; 32 background: #BAA0A01A; 33 backdrop-filter: blur(10px); 34 will-change: blur; 35} 36.cards-img { 37 width: 40%; 38 height: 100%; 39 border-radius: 4px; 40 overflow: hidden; 41} 42.cards-img img { 43 display: block; 44 width: 100%; 45 height: 100%; 46 object-fit: cover; 47} 48.cards-txt { 49 width: calc(60% - 40px); 50 color: var(--bg1); 51} 52.cards-el-sub-title { 53 font-size: clamp(1.5rem, 1.443rem + 0.29vw, 1.7rem); 54} 55.cards-el-title { 56 margin-bottom: 20px; 57 font-size: clamp(2rem, 1.771rem + 1.14vw, 2.8rem); 58} 59.cards-el-p { 60 font-size: clamp(1.4rem, 1.343rem + 0.29vw, 1.6rem); 61}
HTML
1<section id="voice" class="voice-card"> 2 <h2>VOICE</h2> 3 <div class="cards"> 4 <div class="cards-item"> 5 <div class="cards-el"> 6 <div class="cards-el-wrapper"> 7 <div class="cards-img"> 8 <img src="image/voice4.jpg" alt="boy1"> 9 </div> 10 <div class="cards-txt"> 11 <p class="cards-el-sub-title">男の子 (4歳) のママ 初級コース</p> 12 <h4 class="cards-el-title">レッスン日を楽しみにするほどピアノが大好きに。</h4> 13 <p class="cards-el-p"> 14 音楽の楽しさを知ってほしいと思い通い始めました。<br> 15 息子にとってピアノが初めての楽器でしたが、優しく丁寧に指導していただき今ではピアノが大好きです。<br> 16 まだまだ集中が続かない息子に、その都度指導の方法を変えてレッスンを進めていただけることもとてもありがたいです。<br> 17 「早くピアノにいきたい!」「先生大好き!」とレッスン日を楽しみにする姿を見て、先生と出会えてよかったなと感じます。 18 </p> 19 </div> 20 </div> 21 </div> 22 </div> 23 <div class="cards-item"> 24 <div class="cards-el"> 25 <div class="cards-el-wrapper"> 26 <div class="cards-img"> 27 <img src="image/voice5.jpg" alt="boy2"> 28 </div> 29 <div class="cards-txt"> 30 <p class="cards-el-sub-title">小学3年生 男の子のママ 演奏コース</p> 31 <h4 class="cards-el-title">ピアノ演奏の奥深さと楽しさを親子で実感。</h4> 32 <p class="cards-el-p"> 33 初めてのピアノですが、先生の丁寧なご指導のおかげで息子のモチベーションも維持したままレッスンに通えています。<br> 34 指や身体の使い方、緩急のつけ方や、曲の情景を想像して弾くなど、本格的な指導をして頂け、1時間のレッスン内で音色がどんどん美しく変わっていく様子が、素人の私にもわかる程で、いつも感動しています。<br> 35 ピアノ演奏の奥深さと楽しさを親子で実感しています。 36 </p> 37 </div> 38 </div> 39 </div> 40 </div><div class="cards-item"> 41 <div class="cards-el"> 42 <div class="cards-el-wrapper"> 43 <div class="cards-img"> 44 <img src="image/voice6.jpg" alt="boy3"> 45 </div> 46 <div class="cards-txt"> 47 <p class="cards-el-sub-title">男性 (24歳) ピアノ経験あり 大人のコース</p> 48 <h4 class="cards-el-title">細やかな指導のおかげでピアノが以前より好きになった。</h4> 49 <p class="cards-el-p"> 50 先生は雰囲気が明るく気さくな先生で、毎回のレッスンがとても楽しいです。<br> 51 ピアノがより好きになりました。<br> 52 専門的な技術、知識を持たれており、自分の演奏の良い部分やできていない部分を細やかに指導して くださります。<br> 53 自分の弱点がわかるので練習にも取り組みやすくなりました。 54 </p> 55 </div> 56 </div> 57 </div> 58 </div> 59 </div> 60 <div class="end-anim"></div> 61 </section><!-- voice --> 62<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> 63 <script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script> 64 <script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script> 65 <script src="js/script.js"></script>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
GSAPのScrollTriggerに必要なプラグインは記載、GSAPを利用する際のコードも記載していますが、変化ありません
補足
特になし
回答1件
あなたの回答
tips
プレビュー