學習筆記-JS30-Day13-Slide In on Scroll

vincentxu
Mar 30, 2023

--

今日重點:

滾動視窗,讓圖片產生飛進飛出的動態效果。

程式碼:github
線上看:Demo

學習筆記:

關鍵

1. 取得元素的控制權

2. 監聽元素

3. 放入判斷改變圖片CSS

取得元素的控制權

const imgAll = document.querySelectorAll('.slide-in');

監聽元素

window.addEventListener('scroll',debounce(handler));

放入判斷改變圖片CSS

function handler(){
imgAll.forEach( img =>{
//條件一
let imgShow = img.offsetTop + img.height/2;
let windowHeight = window.scrollY + window.innerHeight;
let imgAppear = windowHeight > imgShow;

//條件二
let imgBottom = img.offsetTop + img.height;
let imgOnWindow = imgBottom > window.scrollY;

if( imgOnWindow && imgAppear ){
img.classList.add('active');
console.log('123')
} else {
img.classList.remove('active');
} ;
});
}

提供我的github可以參考做法

參考資料

github:

hackmd筆記:Slide in on Scroll

鐵人賽文章:JS30-Day13-Slide in on Scroll

YT影片:深入淺出 Javascript30 快速導覽:Day 13:Slide in on Scroll

--

--

vincentxu
vincentxu

Written by vincentxu

熱愛學習、戶外運動,關心教育,曾任公部門主計,教育工作者/軟體工程師_嘗試將科技與使用者經驗設計導入教育_共同創辦一個線上教育平台,推廣自主學習與民主教育https://www.daoedu.tw/

No responses yet