表題のように、例えば.sectionという要素が現れるたびにその中の.sticky_areaをscrollmagicのsetPinで固定したくjQueryのeachメソッドを用いて記載しているのですが動いてくれません。
お分かりになる方、ご教授お願いできしたら幸いです。
(動きの理想としては.sticky_areaが固定されている間に、
黄色いボックス、赤いボックスが左右から現れてくるイメージです。)
HTML
1<div class="section"> 2 3 <div class="sticky_area"> 4 <div class="pic"> 5 <div class="wrap"> 6 <div class="left"></div> 7 <div class="right"></div> 8 </div> 9 </div> 10 </div> 11 12</div><!--//section--> 13 14<div class="section"> 15 16 <div class="sticky_area"> 17 <div class="pic"> 18 <div class="wrap"> 19 <div class="left"></div> 20 <div class="right"></div> 21 </div> 22 </div> 23 </div> 24 25</div><!--//section--> 26 27<div class="section"> 28 29 <div class="sticky_area"> 30 <div class="pic"> 31 <div class="wrap"> 32 <div class="left"></div> 33 <div class="right"></div> 34 </div> 35 </div> 36 </div> 37 38</div><!--//section-->
css
1.section { 2 width: 100%; 3 background-color: #ccc; 4} 5 6.section .sticky_area { 7 width: 80%; 8 height: 500px; 9 margin: 0 auto; 10 background-color: #fff; 11} 12 13.section .sticky_area .wrap { 14 position: relative; 15} 16 17.section .sticky_area .wrap .left { 18 position: absolute; 19 top: 0; 20 left: 0; 21 width: 200px; 22 height: 100px; 23 background-color: #f00; 24} 25 26.section .sticky_area .wrap .right { 27 position: absolute; 28 top: 0; 29 left: 0; 30 width: 100px; 31 height: 200px; 32 background-color: #ff0; 33}
JS
1$(function(){ 2 3 const controller = new ScrollMagic.Controller(); 4 5 const picLeft01 = $('.sticky_area .pic .wrap div.left'); 6 const picRight01 = $('.sticky_area .pic .wrap div.right'); 7 const tgt = [picLeft01, picRight01] 8 9 TweenMax.set(picLeft01, { 10 'x': '-30%', 11 'rotation': '-20', 12 'opacity': '0' 13 }); 14 TweenMax.set(picRight01, { 15 'x': '30%', 16 'rotation': '20', 17 'opacity': '0' 18 }); 19 20 const time = new TimelineMax(); 21 time.staggerTo(tgt, 1, { 22 'x': '0%', 23 'rotation': '0', 24 'opacity': '1' 25 }, 1); 26 27 function picAnim() { 28 const trigger = $('.section'); 29 trigger.each(function(i,elem){ 30 var tgtElm = $(elem).find('.sticky_area'); 31 var scene = new ScrollMagic.Scene({ 32 triggerElement: elem, 33 duration: '700', 34 offset: -100, 35 triggerHook: '0' 36 }) 37 .setTween(time) 38 .setPin(tgtElm) 39 .addTo(controller); 40 }); 41 } 42 43 $(window).on('load',function(){ 44 picAnim() 45 }); 46 47 48 });
あなたの回答
tips
プレビュー