JS初学者です。Vanilla JS でスクロールフェードインアニメーションを実装しました、よくあるスクロールしていったら指定しているclassのエレメントにaddClassして、フェードインさせるやつです。
以下のコードでscrollinというclassを付与してフェードインできます
///// スクロールでフェードイン /////
const els = document.querySelectorAll('.fade-in');
els.forEach(function(fadeIn) {
const windowHeight = window.innerHeight;
window.addEventListener('scroll', function() {
const offset = fadeIn.getBoundingClientRect().top;
const scroll = window.scrollY;
if(scroll > offset - windowHeight + windowHeight/15){
fadeIn.classList.add('scrollin');
}
})
})
上記のコードをclass(シンタックスシュガー)を使用して、対象のエレメントと付与するclassを変えたいと思っているのですが、なかなかうまくいきません。
どなたかご教示いただけないでしょうか。
※コードをなるべく冗長にしたく無いので、classを使用した記述にトライしたのですが、そもそもclassでは無い記述が良かったりしますでしょうか?
以下は作成したコードです。
Vanilla
1class fadeIn { 2 constructor(el, In){ 3 this.el = document.querySelector(el); 4 this.In = In; 5 } 6 anime(){ 7 8 this.el.forEach(function(fade) { 9 const windowHeight = window.innerHeight; 10 11 window.addEventListener('scroll', function() { 12 const offset = fade.getBoundingClientRect().top; 13 const scroll = window.scrollY; 14 15 if(scroll > offset - windowHeight + windowHeight/15){ 16 fade.classList.add(this.In); 17 } 18 }) 19 }) 20 21 } 22} 23const FadeAnimation = new fadeIn('.fade-in2-1','.scroll2'); 24const FadeAnimation2 = new fadeIn('.fade-in2-2','.scroll3'); 25 26FadeAnimation.anime(); 27FadeAnimation2.anime();
試したこと
以下のサイトを参考に色々試してみましたが、うまくいきません。。。
https://qiita.com/shotets/items/e4b2ca36f5cbdc393117
https://techplay.jp/column/482

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/23 17:08
2022/08/23 20:19
2022/08/24 16:50
2022/08/24 23:10
2022/08/25 16:35
2022/08/25 21:56
2022/08/26 14:43