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

나눔웹 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
번호 분류 제목 글쓴이
21 UI/UX 드롭다운 메뉴가 금방 닫힐 때, 틈 메우기와 transition-delay로 잡는 법 나눔웹
20 UI/UX 링크 밑줄이 글자에 붙어 답답할 때, text-underline-offset으로 다듬는 법 나눔웹
» UI/UX 고정 헤더에 제목이 가려질 때, scroll-margin-top으로 앵커 맞추는 법 나눔웹
18 UI/UX 폼 에러가 입력 전에 뜨는 문제, :user-invalid로 고치는 법 나눔웹
17 UI/UX 문의란이 내용만큼 늘어나게, CSS field-sizing으로 맞추는 법 나눔웹
16 UI/UX 스켈레톤 로딩 화면 만들기, 빈 화면 대신 회색 자리 표시로 기다림 줄이는 법 나눔웹
15 UI/UX FAQ 아코디언 만들기, details와 summary 태그로 스크립트 없이 접고 펴는 법 나눔웹
14 UI/UX 404 에러 페이지 만들기, 방문자를 놓치지 않는 구성과 상태 코드 확인법 나눔웹
13 UI/UX 화면 애니메이션 줄이기 설정, prefers-reduced-motion으로 대응하는 법 나눔웹
12 UI/UX 문의 폼 중복 접수 막는 법, 전송 버튼 연타와 새로고침 재전송 정리 나눔웹
11 UI/UX 문의 폼 placeholder를 라벨 대신 쓰면 생기는 문제와 label 배치하는 법 나눔웹
10 UI/UX 모바일 버튼이 잘 안 눌린다면? 터치 영역 44px 기준과 padding으로 넓히는 법 나눔웹
9 UI/UX 버튼 클릭 테두리(outline), 지우지 말고 :focus-visible로 정리하는 법 나눔웹
8 UI/UX 팝업 띄울 때마다 화면이 덜컹! '스크롤바 밀림 현상' 1줄 해결법 나눔웹
7 UI/UX 쇼핑몰 결제 금액이 덜덜 떨린다면? '숫자 폭 고정' 타이포그래피 꿀팁 나눔웹
6 UI/UX 투박한 파란색 체크박스는 그만! 단 1줄로 우리 회사 컬러 입히기 나눔웹
5 UI/UX 1%의 디테일이 브랜딩을 완성합니다! '텍스트 드래그 색상' 바꾸기 나눔웹
4 UI/UX 애플(Apple) 사이트처럼 고급스러운 '반투명 유리' 메뉴 만드는 법 나눔웹
3 UI/UX 상단 메뉴에 제목이 가려진다고요? '부드러운 스크롤' 마법의 2줄 나눔웹
2 UI/UX 레이아웃을 망치는 긴 글, 예쁘게 '...'으로 자르는 마법의 CSS 나눔웹
Board Pagination Prev 1 2 Next
/ 2
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4