前提・実現したいこと
JSでスクロール時にパワーポイントの画面遷移のような形でフェードインするものを実装したいと思っています。
該当のソースコード
https://jsfiddle.net/Lhankor_Mhy/8d5nhLau/
発生している問題・エラーメッセージ
上記のコードでは指定されているセクションを行き過ぎた際に、画面が表示されないものになっています。
class名をactiveに置き換える範囲に制限をかける?等の処理を実装したいのですが、何文JSを触り始めたところで右も左もわかっておりません。
記載しておりますソースコード以外に、プラグイン等で実装できる方法がありましたら、併せてご教示いただければ幸いです。
よろしくお願いいたします。
該当のソースコード
こちらの質問・回答を参考にしました。
Teratail上の該当の質問
https://teratail.com/questions/283349
該当のソースコード
https://jsfiddle.net/Lhankor_Mhy/8d5nhLau/
以下は上記のソースコードを起こしたものになります。
HTML
1<body> 2 <section class="active">section1</section> 3 <section>section2</section> 4 <section>section3</section> 5 <script type="text/javascript" src="scroll.js"></script> 6</body>
CSS
1section { 2 width: 100%; 3 height: 100vh; 4 box-sizing: border-box; 5 opacity: 0; 6 transition: 1s; 7 position: fixed; 8} 9section.active { 10 opacity: 1; 11 z-index: 2; 12} 13section:nth-child(1){ 14 background-color: khaki; 15} 16section:nth-child(2){ 17 background-color: azure; 18} 19section:nth-child(3){ 20 background-color: pink; 21} 22
JavaScript
1let f = true; 2document.addEventListener('wheel', e => { 3 if (f) { 4 const target = document.querySelector('section.active'); 5 const shown = (e.deltaY > 0) ? target.nextElementSibling : target.previousElementSibling; 6 shown?.classList.add('active'); 7 target.classList.remove('active'); 8 f = false; 9 } 10}); 11document.querySelectorAll('section').forEach(el => el.addEventListener('transitionend', e => { 12 f = true; 13})); 14
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/23 17:21
退会済みユーザー
2021/02/24 00:16 編集