반응형
<script>
function debounce(func, wait = 20, immediate = true) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
const sliderImages = document.querySelectorAll('.slide-in');
function checkSlide() {
sliderImages.forEach(sliderImage => {
const slideInAt = (window.scrollY + window.innerHeight) - sliderImage.height / 2;
const imageBottom = sliderImage.offsetTop + sliderImage.height;
const isHalfShown = slideInAt > sliderImage.offsetTop;
const isNotScrolledPast = window.scrollY < imageBottom;
if (isHalfShown && isNotScrolledPast) {
sliderImage.classList.add('active');
} else {
sliderImage.classList.remove('active');
}
});
}
window.addEventListener('scroll', debounce(checkSlide));
</script>
스크롤을 내리거나 올릴 때 이미지가 글 가운데 슬라이드로 껴 들어오는 코드를 작성했다.
이미지 칸이 스크롤을 내리기 전에는 비워져있다.
스크롤을 내리면 이미지가 슬라이드로 채워진다.
다시 스크롤을 올리면 이미지가 사라지게 된다.
반응형
'챌린지 > JavaScript 30일 챌린지' 카테고리의 다른 글
[JavaScript 30일 챌린지] : 15일차 (0) | 2022.02.11 |
---|---|
[JavaScript 30일 챌린지] : 14일차 (0) | 2022.02.10 |
[JavaScript 30일 챌린지] : 12일차 (0) | 2022.02.08 |
[JavaScript 30일 챌린지] : 11일차 (0) | 2022.02.07 |
[JavaScript 30일 챌린지] : 10일차 (0) | 2022.02.06 |
댓글