라이브러리

스크롤을 부드럽게 해주는 라이브러리

2024. 8. 21.
목차

lenis

Darkroom Engineering에서 만든 웹사이트에 매끄러운 스크롤 효과를 제공하는 라이브러리이다. 트랙패드나 마우스 휠을 사용하는 다양한 디바이스에서 일관되게 보여진다. 개발자 및 디자이너들은 이 라이브러리를 사용해 애니메이션 끊김이나 지연 문제를 해결하고 더욱 자연스러운 웹 애니메이션을 구현할 수 있다.

 

 

 

사용법

라이브러리 추가하기

<head></head> 태그 사이에 입력한다.

<head>
<script src="https://unpkg.com/lenis@1.1.13/dist/lenis.min.js"></script>
</head>

파일 직접 다운로드하기 https://github.com/darkroomengineering/lenis

 

js 작성하기

<script></script> 태그 사이, 또는 외부 scipt파일에 입력한다

//기본
const lenis = new Lenis();
function raf(time) {
lenis.raf(time);
requestAnimationFrame(raf);
}
requestAnimationFrame(raf);
//사용자 정의
const lenis = new Lenis({
duration: 1.5,
touchInertiaMultiplier: 40,
});
function raf(time) {
lenis.raf(time);
requestAnimationFrame(raf);
}
requestAnimationFrame(raf);

 

옵션

 

wrapper window 스크롤 컨테이너로 사용될 요소
content document.documentElement 스크롤될 콘텐츠를 포함하는 요소 (일반적으로 wrapper의 직계 자식)
eventsTarget wrapper 수신할 요소 wheel와 touch이벤트
smoothWheel true wheel이벤트 로 시작된 스크롤을 부드럽게 만듭니다.
lerp 0.1 선형 보간 강도(0~1 사이)
duration 1.2 스크롤 애니메이션의 지속 시간(초). lerp가 정의된 경우 쓸모없음
easing (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)) 스크롤 애니메이션에 사용할 완화 함수. lerp가 정의된 경우 쓸모없음
orientation vertical 스크롤 방향 (vertical, horizontal)
gestureOrientation vertical 제스처 방향 (vertical, horizontalboth)
syncTouch false 스크롤 동기화를 허용하는 동시에 터치 장치 스크롤을 모방
(iOS<16에서는 불안정할 수 있음)
syncTouchLerp 0.075 syncTouch관성 중 Lerp 적용
touchInertiaMultiplier 35 syncTouch관성 의 강도
wheelMultiplier 1 마우스 휠 이벤트에 사용할 승수
touchMultiplier 1 터치 이벤트에 사용할 승수
infinite false 터치 기기에서는 무한 스크롤을 활성화 syncTouch: true.
autoResize true ResizeObserver에 따라 인스턴스 크기를 자동으로 조정. 만약 false로 설정하면 수동으로 .resize() 크기를 조정
prevent undefined 이벤트가 순회한 요소에 따라 스크롤이 매끄럽게 처리되는 것을 수동으로 방지. true로 설정되면 스크롤이 매끄럽게 처리되지 않는다.
예:(node) => node.classList.contains('cookie-modal')
virtualScroll undefined 이벤트가 소모되기 전에 수동으로 수정. false로 반환되는 경우 스크롤이 매끄럽지 않다.
예: (e) => { e.deltaY /= 2 }(수직 스크롤 속도를 늦추기 위해) 또는 ({ event }) => !event.shiftKey(Shift 키를 눌렀을 때 스크롤이 매끄럽지 않게 하기 위해)

 

카테고리 다른 글 더보기