스크롤 시 특정 컨텐츠 아래에서 위로 올라오는 효과(+fade in)
2023. 11. 23. 16:15ㆍjs
transform으로 밑으로 보냄, opacity로 덜 지저분하게 함
.fade-in-element{border: 1px solid #E4E4E4; position: relative; opacity: 0;
transform: translateY(100px);
transition: opacity 0.7s ease-in-out, transform 0.7s ease-in-out;}
같은 클래스 명 2개가 같이 동시에 올라와야 하는 상황
<script>
document.addEventListener("DOMContentLoaded", function() {
// Get the elements you want to fade in
var fadeElements = document.querySelectorAll('.fade-in-element');
// Function to check if an element is in the viewport
function isElementInViewport(el) {
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
}
// Function to handle the scroll event
function handleScroll() {
fadeElements.forEach(function(element) {
if (isElementInViewport(element)) {
element.style.opacity = 1;
element.style.transform = 'translateY(0)';
// Optionally, you can remove the event listener for each element as it becomes visible
// window.removeEventListener('scroll', handleScroll);
}
});
}
// Attach the scroll event listener
window.addEventListener('scroll', handleScroll);
// Check for visibility on page load
handleScroll();
});
</script>
'js' 카테고리의 다른 글
특정 div 지날 때 div에 on 클래스 추가 삭제 (0) | 2024.01.23 |
---|---|
스크롤 하다가 원하는 요소가 화면에 보일 때 transform (2) | 2023.11.24 |
marguee.js 흐르는 느낌의 슬라이드 (가로, 세로) (0) | 2023.11.23 |
[js] js style display (0) | 2022.06.07 |
[js] 입력받은 숫자 3자리 마다 콤마 찍기 (0) | 2022.05.30 |