실무에 바로 적용할 수 있는 웹 제작 꿀팁 및 유용한 자료실 공간입니다.
나눔웹이 제공하는 핵심 노하우와 마케팅 인사이트를 자유롭게 활용해 보십시오.

나눔웹 UI/UX 꿀팁

고정 헤더에 제목이 가려질 때, scroll-margin-top으로 앵커 맞추는 법

목차나 "서비스 안내" 버튼을 눌렀는데, 제목이 고정 헤더 아래로 숨어 보이지 않았던 적 있으신가요?
고정·스티키 메뉴가 있는 페이지에서 흔한 문제입니다. scroll-margin-top을 앵커 대상에 두면, 레이아웃 여백은 그대로 두고 스크롤 멈춤 위치만 아래로 밀어 제목이 메뉴 아래에 깔끔히 드러납니다.

💡 왜 그냥 margin-top을 주면 안 되나요?

일반 margin-top이나 padding-top은 평소 화면에도 빈 칸이 생깁니다. scroll-margin-top은 해시(#)로 이동할 때만 쓰는 스크롤용 여백이라, 문단 간격은 유지한 채 앵커 위치만 보정합니다. 크롬·엣지·사파리·파이어폭스 최신 버전에서 모두 동작합니다.

1. 앵커가 붙는 제목에 scroll-margin-top 넣기

링크 대상이 되는 h2·h3에 id를 두고, 헤더 높이만큼 scroll-margin-top을 줍니다. 헤더가 약 64px라면 12px 정도 여유를 더해 76px처럼 잡으면 제목이 메뉴에 딱 붙지 않습니다.

/* 고정·스티키 헤더 높이 + 살짝 여유 */
:root {
  --header-h: 64px;
}

.article h2[id],
.article h3[id] {
  scroll-margin-top: calc(var(--header-h) + 12px);
}

2. HTML 앵커와 목차 링크 연결

대상 제목에 id를 쓰고, 목차·버튼은 href="#id"로 연결합니다. 자바스크립트 스크롤 보정 없이도 브라우저가 스크롤 마진을 반영합니다. 헤더 높이가 모바일·PC에서 다르면 미디어쿼리로 --header-h만 바꿔 주면 됩니다.

<nav>
  <a href="#pricing">요금 안내</a>
</nav>

<h2 id="pricing">요금 안내</h2>

/* 모바일 헤더가 더 높을 때 */
@media (max-width: 768px) {
  :root { --header-h: 56px; }
}

3. scroll-padding과의 차이, 주의할 점

scroll-padding-top은 스크롤 컨테이너(보통 html) 쪽에 여백을 두는 방식이고, scroll-margin-top은 도착 요소에 붙입니다. 문서 목차처럼 특정 제목만 보정할 때는 마진이 범위가 분명합니다. 둘을 같은 값으로 겹치면 여백이 두 배가 되니, 한쪽에만 맞추는 편이 안전합니다. 또한 [id] 전체에 걸면 숨은 스킵 링크·폼 필드까지 영향이 갈 수 있어, 본문 제목 선택자로 좁히는 것을 권합니다.

구분쓰는 곳특징
scroll-margin-toph2[id] 등 앵커 대상레이아웃 간격 유지, 스크롤만 보정
scroll-padding-tophtml / 스크롤 박스컨테이너 전역 여백
margin+padding 트릭구형 우회평소에도 빈 칸이 생김

"앵커는 제목이 보이는 자리에서 멈춰야 합니다."

나눔웹은 고정 메뉴·원페이지 섹션을 만들 때 헤더 높이와 앵커 여백을 같이 맞춰,
목차와 CTA 클릭이 가려지지 않게 손봅니다.


List of Articles
번호 분류 제목 글쓴이
» UI/UX 고정 헤더에 제목이 가려질 때, scroll-margin-top으로 앵커 맞추는 법 new 나눔웹
81 퍼블리싱 CSS 컨테이너 쿼리 쓰는 법, 화면이 아니라 카드 폭에 맞춰 반응하기 new 나눔웹
80 UI/UX 폼 에러가 입력 전에 뜨는 문제, :user-invalid로 고치는 법 나눔웹
79 모바일 모바일 브라우저 상단바 색 맞추기, theme-color 메타 태그 쓰는 법 나눔웹
78 마케팅 문의 완료 페이지 noindex 설정법, 검색에 잡히지 않게 막는 순서 나눔웹
77 UI/UX 문의란이 내용만큼 늘어나게, CSS field-sizing으로 맞추는 법 나눔웹
76 웹 성능 긴 페이지 스크롤이 무거울 때, content-visibility로 렌더링 줄이는 법 나눔웹
75 모바일 모바일 100vh 잘림, dvh·svh로 주소창 높이까지 맞추는 법 나눔웹
74 마케팅 구글 서치 콘솔 등록 방법, 새 홈페이지 소유권 확인부터 색인 요청까지 나눔웹
73 퍼블리싱 CSS :has() 선택자 활용법, 자식 상태에 따라 부모 박스 스타일 바꾸기 나눔웹
72 웹 성능 반응형 이미지 srcset 쓰는 법, 모바일에 PC용 큰 사진을 보내지 않으려면 나눔웹
71 퍼블리싱 제목 줄바꿈이 어색할 때, text-wrap: balance로 한 단어만 남는 문제 정리 나눔웹
70 마케팅 robots.txt 작성법, 검색에 안 보여야 할 페이지와 사이트맵 위치 알려주는 순서 나눔웹
69 UI/UX 스켈레톤 로딩 화면 만들기, 빈 화면 대신 회색 자리 표시로 기다림 줄이는 법 나눔웹
68 퍼블리싱 모바일에서 표(table)가 깨질 때, 가로 스크롤로 감싸거나 카드형으로 바꾸는 법 나눔웹
67 웹 성능 gzip 압축 설정법, 홈페이지 HTML·CSS 파일을 작게 보내 로딩 줄이는 순서 나눔웹
66 모바일 아이폰에서 숫자가 파란 전화 링크로 바뀔 때, format-detection으로 막는 법 나눔웹
65 마케팅 사이트맵(sitemap.xml) 만들기, 새 페이지가 검색에 늦게 잡힐 때 작성과 제출법 나눔웹
64 UI/UX FAQ 아코디언 만들기, details와 summary 태그로 스크립트 없이 접고 펴는 법 나눔웹
63 웹 성능 PageSpeed Insights 점수 보는 법, 실사용자 데이터와 실험실 점수가 다를 때 나눔웹
Board Pagination Prev 1 2 3 4 5 Next
/ 5
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4