前提・実現したいこと
スクロールして画像が可視範囲に入ったらアニメーションをスタートさせたい。
section3にある、imgが表示範囲に入った際に、画像がフェードインするようにしたい。
発生している問題・エラーメッセージ
画像が可視範囲に入る以前に
サイトを開いた時点でアニメーションが作動してしまう。
該当のソースコード
HTML
1<section id="section3" class="section section3"> 2 <h1>Company Profile</h1> 3 <div class="img-wrap3"> 4 <img src="/Users/xxxx/Desktop/xx/images/header_image.jpg"> 5 </div> 6</section> 7
CS
1 2 3 .img-animation { 4 animation: img-opacity 2s cubic-bezier(.4, 0, .2, 1); 5 overflow: hidden; 6 position: relative; 7 } 8 9 10 .img-animation:before { 11 animation: img-animation 2s cubic-bezier(.4, 0, .2, 1) forwards; 12 background: #fff; 13 bottom: 0; 14 content: ''; 15 left: 0; 16 pointer-events: none; 17 position: absolute; 18 right: 0; 19 top: 0; 20 z-index: 1; 21 } 22 23 @keyframes img-opacity { 24 0% { 25 opacity: 0; 26 } 27 } 28 29 @keyframes img-animation { 30 100% { 31 transform: translateX(100%); 32 } 33 } 34 35 36
JS
1 2$(window).on(function() { 3 const image = document.querySelectorAll('.img-wrap3'); 4 5 const observer = new IntersectionObserver(function(entries) { 6 entries.forEach(function(entry) { 7 if (entry.intersectionRatio > 0) { 8 entry.target.classList.add('img-animation'); 9 } else { 10 entry.target.classList.remove('img-animation'); 11 } 12 }); 13 }); 14 15 Array.prototype.forEach.call(image, function(img) { 16 observer.observe(img); 17 }); 18 }) 19
補足情報(FW/ツールのバージョンなど)
https://firstlayout.net/css-animation-of-images/
上記サイトのスクロールアニメーションを参考にしています。
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/02 10:01
2020/05/02 10:11 編集
2020/05/02 11:26
2020/05/02 11:37
2020/05/02 11:43
2020/05/02 12:00
2020/05/02 12:11
2020/05/02 12:14
2020/05/02 12:18