https://codepen.io/yutas01/pen/povgqez
上記のURLにソースがあるのですが、それぞれの水玉が下の水玉に押し出され、画面の半分以上上に来たら灰色に変化するという動きを実装したいのですが、少しスクロールしただけで全ての水玉が灰色になってしまいます。どのような記述をすればよいのでしょうか。
それと、現在position: sticky;
を使用して押し出される動きを付けているのですが、このプロパティがIE11に対応していません。
どうしても対応させたく様々なプラグインを試してみたのですが、挙動がおかしくなってしまったので、position: sticky;
を使用しないで押し出される方法にしたいです。
なるべく自分で考えようと思い、positon: relative;
とpositon: fixed;
をjsで制御させて実装しようと思ったのですが、上手くできなかったので、こちらで質問させて頂きます。(質問丸投げになってしまい、申し訳ありません。。)
html
1<div class="container"> 2 <div class="cont1"> 3 <div class="drop-img drop-img2"> 4 <img src="https://dl.dropbox.com/s/rkox4afc0kmkfj1/drop.png?dl=0" alt=""> 5 <p class="drop-year"> 6 2019 7 </p> 8 </div> 9 </div> 10 <div class="cont2"> 11 <div class="drop-img drop-img3"> 12 <img src="https://dl.dropbox.com/s/rkox4afc0kmkfj1/drop.png?dl=0" alt=""> 13 <p class="drop-year"> 14 2018 15 </p> 16 </div> 17 </div> 18 <div class="cont3"> 19 <div class="drop-img"> 20 <img src="https://dl.dropbox.com/s/rkox4afc0kmkfj1/drop.png?dl=0" alt=""> 21 <p class="drop-year"> 22 2017 23 </p> 24 </div> 25 </div> 26 <div class="cont4"> 27 <div class="drop-img"> 28 <img src="https://dl.dropbox.com/s/rkox4afc0kmkfj1/drop.png?dl=0" alt=""> 29 <p class="drop-year"> 30 2016 31 </p> 32 </div> 33 </div> 34</div>
css
1.container { 2 position: relative; 3 4 &::before { 5 content: ''; 6 position: absolute; 7 left: 0; 8 right: 0; 9 background: #00a0e9; 10 width: 3px; 11 height: 100%; 12 margin: auto; 13 } 14} 15 16.drop { 17 &-img { 18 position: sticky; 19 top: 45%; 20 text-align: center; 21 right: 0; 22 left: 0; 23 24 img { 25 width: 80px; 26 } 27 } 28 29 &-year { 30 position: absolute; 31 color: #fff; 32 left: 0; 33 right: 0; 34 top: 20px; 35 } 36} 37 38.cont1 { 39 background: #FFDEFF; 40 height: 600px; 41 text-align: center; 42} 43 44.cont2 { 45 background: #DEFFFF; 46 height: 600px; 47 text-align: center; 48} 49 50.cont3 { 51 background: #FFFFDE; 52 height: 600px; 53 text-align: center; 54} 55 56.cont4 { 57 background: #C7FFC7; 58 height: 600px; 59 text-align: center; 60} 61
js
1$(function() { 2 $(window).scroll(function() { 3 var wH = $(window).height(); 4 var dropH = $('.drop-img').offset().top; 5 6 if ( dropH < $(window).scrollTop() + (wH/2)) { 7 $('.drop-img').children('img').attr('src', 'https://dl.dropbox.com/s/ns0be5m1vp0611t/drop_gray.png?dl=0'); 8 } else { 9 $('.drop-img').children('img').attr('src', 'https://dl.dropbox.com/s/rkox4afc0kmkfj1/drop.png?dl=0'); 10 } 11 }) 12});
回答2件
あなたの回答
tips
プレビュー