반응형
javascript scrollIntoView를 부드럽게 만드는 방법
리액트 앱에서는 다음과 같이 특정 노드를 표시하기 위해 호출되는 메서드가 있습니다.
scrollToQuestionNode(id) {
const element = document.getElementById(id);
element.scrollIntoView(false);
}
스크롤은 정상적으로 실행되지만 스크롤 동작은 약간 흔들립니다.어떻게 하면 부드럽게 할 수 있을까요?ScrollIntoView에 동일한 옵션을 제공할 수 없습니다.
이게 도움이 될 거야
scrollIntoView의 MDN 문서에서 부울 대신 옵션을 전달할 수 있습니다.
scrollIntoViewOptions Optional
A Boolean or an object with the following options:
{
behavior: "auto" | "instant" | "smooth",
block: "start" | "center" | "end" | "nearest",
inline: "start" | "center" | "end" | "nearest",
}
이렇게 간단히 매개 변수를 전달할 수 있습니다.
scrollToQuestionNode(id) {
const element = document.getElementById(id);
element.scrollIntoView({ block: 'end', behavior: 'smooth' });
}
참고 자료: https://developer.mozilla.org/en/docs/Web/API/Element/scrollIntoView
멀티브로를 지원하려면 여기서부터의 smooth-scroll-polyfill을 사용합니다.
구현이 용이하도록wrapper
에 대해 이렇게polyfill
그래서 그.js
polyfill
로드 후 메서드가 초기화됩니다.
https://codepen.io/diyifang/embed/MmQyoQ?height=265&theme-id=0&default-tab=js,result&embed-version=2
이것으로 브라우저 간에 동작합니다.
document.querySelector('.foo').scrollIntoView({
behavior: 'smooth'
});
스크롤바가 있는 div에서 다음 CSS를 사용합니다.
.element-with-the-scrollbar {
overflow-y: scroll;
scroll-behavior: smooth;
}
이렇게 하면 다음 작업을 수행해도 부드럽게 스크롤할 수 있습니다.
elementWithTheScrollbar.scrollTop = 0;
언급URL : https://stackoverflow.com/questions/42503599/how-to-make-javascript-scrollintoview-smooth
반응형
'source' 카테고리의 다른 글
jQuery.serialize() 데이터를 JSON 개체로 변환하려면 어떻게 해야 합니까? (0) | 2023.03.02 |
---|---|
angularjs를 사용하여 폼을 연재할 수 있는 더 효과적인 방법이 있나요? (0) | 2023.03.02 |
Angularjs는 베스트 프랙티스를 최소화합니다. (0) | 2023.03.02 |
React 컨스트럭터에서 super()를 호출하는 기능은 무엇입니까? (0) | 2023.02.25 |
JDBC ResultSet: getDateTime이 필요한데 getDate와 getTimeStamp만 있습니다. (0) | 2023.02.25 |