java script 메모
Odometer.js 라이브러리
그나쓰
2023. 7. 24. 14:58
한글자씩 휘리릭 넘어가는 모션을 보여줘야해서 사용하게 된 odometer.js 라이브러리
그런데 나는 화면에 해당세션이 보여질때 라이브러리가 작동하게 하고싶은 것
구글은 내 친구, 함 해보자고
Static Template
slfc2s.csb.app
jqeury cdn은 필수임
//css cdn
<link rel="stylesheet" href="https://github.hubspot.com/odometer/themes/odometer-theme-default.css" />
//js cdn
<script src="https://cdnjs.cloudflare.com/ajax/libs/odometer.js/0.4.8/odometer.min.js"></script>
그러고 odometer의 css와 js cdn을 불러온다
<section class="section_01">
section 1
</section>
<section class="section_02 counter">
section 2
<div class="counter-number">
<span class="pxl-counter-number-value"></span>
</div>
</section>
<section class="section_03">
section 3
</section>
<section class="section_04">
section 4
</section>
html 마크업은 간단하게 세션으로 구분지어 주고
오도미터가 들어갈 세션에 counter 클래스명과
해당 세션 안에 오도미터 라이브러리 박스를 넣어준다.
* {margin: 0; padding: 0; box-sizing: border-box;}
section {height: 100vw; display: flex; flex-direction: column; align-items: center; justify-content: center;}
.section_01 { background: yellowgreen; }
.section_02 { background: coral; }
.section_03 { background: cornflowerblue; }
.section_04 { background: pink; }
css도 간단하게 배경색이랑 글자 위치만 잡아줌
<script type="text/javascript">
function checkVisible(element, check = "above") {
const viewportHeight = $(window).height(); // Viewport Height
const scrolltop = $(window).scrollTop(); // Scroll Top
const y = $(element).offset().top;
const elementHeight = $(element).height();
// 반드시 요소가 화면에 보여야 할경우
if (check == "visible")
return (
y < viewportHeight + scrolltop && y > scrolltop - elementHeight
);
// 화면에 안보여도 요소가 위에만 있으면 (페이지를 로드할때 스크롤이 밑으로 내려가 요소를 지나쳐 버릴경우)
if (check == "above") return y < viewportHeight + scrolltop;
}
// 리소스가 로드 되면 함수 실행을 멈출지 말지 정하는 변수
let isVisible = false;
// 이벤트에 등록할 함수
const func = function () {
if (!isVisible && checkVisible(".counter")) {
isVisible = true;
var el = document.querySelector(".pxl-counter-number-value");
od = new Odometer({
el: el,
value: 0,
format: "",
theme: "default"
});
od.update(13329);
}
isVisible && window.removeEventListener("scroll", func);
};
window.addEventListener("scroll", func);
</script>
스크립트 구간
참고
🚀 스크롤 내려서 특정 영역 감지하기
스크롤 내려서 특정 영역 감지하기 제이쿼리를 이용해 스크롤을 내리면 이를 감지해서 이벤트를 한번 발생시키는 스크립트이다. 스크롤 내려서 파랑 영역이 나올때까지 내려보세요 function checkV
inpa.tistory.com