티스토리 뷰
//글씨 쪼개기
// let text = document.querySelector("#section01 .content__item__desc");
// let splitText = text.innerText;
// let splitWrap = splitText.split('').join("</span><span>");
// splitWrap = "<span>" + splitWrap + "</span>";
// text.innerHTML = splitWrap;
//여러개 글씨 쪼개기
document.querySelectorAll(".content__item__desc").forEach(desc=>{
let splitText = desc.innerText;
let splitWrap = splitText.split('').join("</span><span aria-hidden='true'>");
splitWrap = "<span aria-hidden='true'>" + splitWrap + "</span>";
desc.innerHTML = splitWrap;
//웹표준 준수하기 위함 - 가독성 위해서.
desc.setAttribute("aria-label",splitText);
});
//requestAnimationFrame()을 이용한 보다 효율적인 코딩.
function scroll(){
let scrollTop = window.screenY || window.pageYOffset || document.documentElement.scrollTop;
document.querySelector(".srcollTop").innerText = Math.round(scrollTop);
//한번에 나타나기
// document.querySelectorAll(".content__item").forEach(item =>{
// if(scrollTop >= item.offsetTop){
// item.querySelector(".content__item__desc").classList.add("show");
// }
// })
//순차적으로 나타나기
document.querySelectorAll(".content__item").forEach(item => {
if(scrollTop >= item.offsetTop){
item.querySelectorAll(".content__item__desc span").forEach((span,index)=>{
//setTimeout 함수를 이용해서 인덱스+1 값만큼 반복 실행. 0.05초 마다.
setTimeout(()=>{
span.classList.add("show");
}, 50 * (index+1))
})
}
})
requestAnimationFrame(scroll) //재귀함수의 예 (자기자신을 호출)
}
scroll();
이번 예제는 스크롤을 내리면 텍스트가 하나씩 쪼개져서 출력되는 이펙트 예제입니다.
텍스트가 한번에 나타나는것이 아닌 순차적으로 나타내게 하기위해서 setTimeout 함수를 이용해서 작업합니다.
글자의 전체 갯수(index+1) 만큼 반복 실행하며, 그 주기는 0.05초 입니다.
글씨를 우선 쪼개 주기 위해서 각각의 문자마다 span 태그를 입혀주는 작업을 합니다.
이 과정에서 웹 표준을 고려하기 위해서 aria-hidden을 사용합니다.
'Script Sample > Parallax Effect' 카테고리의 다른 글
패럴랙스 이펙트07 : 리빌 효과 (0) | 2022.03.10 |
---|---|
패럴랙스 이펙트05. : 이질감 효과 (0) | 2022.03.08 |
패럴랙스 이펙트04. : 나타나기 (0) | 2022.03.08 |
패럴랙스 이펙트03. : 숨김메뉴 (0) | 2022.03.07 |
패럴랙스 이펙트 02. 사이드 메뉴 (0) | 2022.03.07 |
댓글
© 2018 webstoryboy