이 속성은 브라우저에게 이렇게 말하는 것과 같습니다: "야, 이 요소로 스크롤 할 때 위에 80px 정도는 여유 좀 줘!"
이를 통해 레이아웃 자체에 영향을 주는 Margin을 사용할 방법을 고려하거나, 복잡하게 좌표를 계산하여 직접 스크롤(window.scrollTo({ top: ... }))할 필요 없습니다.
3. 전체 흐름도
토글이 닫히면서 스크롤이 이동하는 과정을 시각화하면 다음과 같습니다.
mermaid
다이어그램 정의(mermaid):
graph TD
A[하단 닫기 버튼 클릭] --> B[onToggle 실행: 컨텐츠 숨김]
B --> C[scrollIntoView 실행]
C --> D{scroll-margin-top 존재?}
D -- Yes --> E[헤더 높이를 고려해 정지!]
D -- No --> F[브라우저 최상단에 딱 붙어 헤더에 가려짐]
E --> G[사용자: 편_안]
4. 최종 코드 스니펫(예시)
CSS
css
.accordion-header{scroll-margin-top:100px;/* 고정 헤더보다 조금 더 여유 있게 */transition: all 0.3s;}
React Component
jsx
consthandleCollapse=()=>{// 1. 상태 변경 (컨텐츠 접기)setIsExpanded(false);// 2. 스크롤 이동 (CSS가 위치를 보정해줌) headerRef.current?.scrollIntoView({behavior:"smooth",block:"start",});};
마치며
스크롤 문제는 JS 문제 같아 보이지만, 의외로 CSS로 해결할 때 가장 깔끔합니다. scroll-margin-top은 브라우저 호환성도 좋으니(IE 제외) 적극 활용해 보세요!