CSS Anchor Positioning과 absolute 차이, 드롭다운 위치는 어떻게 잡아야 할까?
CSS 26.07.30 조회 18
홈페이지에서 드롭다운 메뉴나 툴팁을 만들 때 가장 자주 고민하는 부분 중 하나가 위치입니다. 버튼을 클릭하면 바로 아래에 메뉴가 떠야 하는데, 화면 크기가 바뀌거나 부모 요소의 위치가 달라지면 예상한 위치에서 벗어나는 경우가 있습니다.
기존에는 이런 UI를 대부분 position: absolute로 처리했습니다. 버튼을 감싸는 부모 요소에 position: relative를 주고, 드롭다운에는 top, left, right 값을 지정해 위치를 맞추는 방식입니다.
최근에는 이런 기준 요소 주변 배치를 더 명확하게 다룰 수 있는 CSS 기능으로 CSS Anchor Positioning을 확인해볼 수 있습니다. 버튼이나 특정 요소를 기준점으로 삼고, 그 기준점에 맞춰 툴팁이나 드롭다운의 위치를 잡는 방식입니다.
핵심은 absolute 방식은 부모 요소 기준으로 위치를 잡고, CSS Anchor Positioning은 특정 기준 요소를 중심으로 드롭다운이나 툴팁의 위치를 잡을 수 있다는 점입니다.
absolute 방식은 어떻게 위치를 잡을까요?
기존 드롭다운 UI에서는 보통 아래처럼 작성합니다.
<div class="dropdown">
<button type="button" class="dropdown-btn">메뉴 열기</button>
<div class="dropdown-menu">
<a href="#">회사소개</a>
<a href="#">서비스</a>
<a href="#">문의하기</a>
</div>
</div>
.dropdown {
position: relative;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
margin-top: 8px;
}
이 구조에서는 .dropdown이 기준이 되고, .dropdown-menu가 그 안에서 절대 위치로 배치됩니다. 버튼 바로 아래에 메뉴를 붙이는 간단한 구조라면 이 방식으로도 충분합니다.
문제는 화면이 좁아지거나, 드롭다운이 우측 끝에 있거나, 부모 요소에 overflow: hidden 같은 속성이 들어갔을 때 생깁니다. 메뉴가 화면 밖으로 나가거나 잘리고, 모바일에서는 예상과 다른 위치에 표시될 수 있습니다.
absolute 방식의 한계
position: absolute는 익숙하고 강력한 방식입니다. 다만 기준이 되는 부모 구조에 영향을 많이 받습니다.
예를 들어 드롭다운 메뉴를 버튼 아래에 붙이고 싶어도, 실제 기준은 가까운 position 지정 부모가 됩니다. HTML 구조가 복잡하면 기준을 찾기 어려워지고, 템플릿을 수정하는 과정에서 위치가 갑자기 틀어질 수 있습니다.
자주 생기는 문제는 아래와 같습니다.
- 부모 요소 기준으로 위치가 잡혀 원하는 버튼과 어긋남
- 화면 오른쪽 끝에서 드롭다운이 잘림
- 모바일에서 메뉴가 화면 밖으로 밀림
- 스크롤 영역 안에서 팝업이 잘림
- 기준 요소와 팝업 요소가 떨어져 있으면 제어가 복잡해짐
그래서 작은 UI라도 위치 계산이 많아지면 CSS만으로 깔끔하게 처리하기 어려울 때가 있습니다.
CSS Anchor Positioning은 어떤 기능일까요?
CSS Anchor Positioning은 말 그대로 특정 요소를 기준점으로 삼아 다른 요소의 위치를 잡는 CSS 기능입니다.
예를 들어 버튼을 anchor로 지정하고, 드롭다운 메뉴를 그 버튼 기준으로 배치하는 식입니다.
<button type="button" class="menu-btn">
메뉴 열기
</button>
<div class="menu-panel">
<a href="#">회사소개</a>
<a href="#">서비스</a>
<a href="#">문의하기</a>
</div>
.menu-btn {
anchor-name: --menu-button;
}
.menu-panel {
position: absolute;
position-anchor: --menu-button;
position-area: bottom;
}
위 예시에서 .menu-btn은 기준 요소가 되고, .menu-panel은 그 기준 요소 아래쪽에 배치됩니다.
기존 absolute가 부모 박스를 기준으로 위치를 잡는 느낌이라면, CSS Anchor Positioning은 특정 요소 자체를 기준으로 삼는 방식에 가깝습니다.
anchor-name과 position-anchor의 역할
Anchor Positioning을 이해할 때 핵심은 두 가지입니다.
anchor-name은 기준이 되는 요소에 이름을 붙이는 속성입니다. 버튼, 아이콘, 카드, 입력창처럼 다른 요소의 위치 기준이 되는 대상에 지정할 수 있습니다.
.tooltip-btn {
anchor-name: --tooltip-anchor;
}
position-anchor는 위치가 배치될 요소에 적용합니다. 어떤 anchor를 기준으로 삼을지 연결하는 역할을 합니다.
.tooltip-box {
position: absolute;
position-anchor: --tooltip-anchor;
position-area: top;
}
이렇게 작성하면 .tooltip-box는 .tooltip-btn을 기준으로 위치를 잡을 수 있습니다.
absolute와 CSS Anchor Positioning 차이
두 방식의 차이는 기준을 잡는 방식에서 갈립니다.
absolute는 주로 부모 요소를 기준으로 위치를 잡습니다. 그래서 HTML 구조와 부모 요소의 CSS 상태를 함께 봐야 합니다.
CSS Anchor Positioning은 특정 기준 요소를 이름으로 연결해 위치를 잡습니다. 버튼과 메뉴처럼 서로 연결된 UI를 표현할 때 구조가 더 명확해질 수 있습니다.
정리하면 이렇게 볼 수 있습니다.
position: absolute: 부모 요소 기준으로 위치 지정anchor-name: 기준이 되는 요소에 이름 지정position-anchor: 배치할 요소가 어떤 기준을 따를지 지정position-area: 기준 요소의 위, 아래, 옆 등 배치 방향 지정anchor(): 기준 요소의 좌표를 활용해 더 세밀하게 위치 지정
기존 방식이 틀렸다는 뜻은 아닙니다. 현재도 absolute는 드롭다운, 툴팁, 배지, 레이어 UI에 널리 쓰입니다. 다만 기준 요소와 팝업 요소의 관계를 더 명확하게 표현하고 싶다면 Anchor Positioning을 검토해볼 수 있습니다.

드롭다운 UI에서는 어떻게 활용할 수 있을까요?
드롭다운 메뉴는 기준 버튼과 메뉴 박스의 관계가 분명한 UI입니다. 그래서 Anchor Positioning과 잘 어울립니다.
예를 들어 필터 버튼 아래에 옵션 박스를 띄우는 구조를 생각해볼 수 있습니다.
<button type="button" class="filter-btn">
필터 선택
</button>
<div class="filter-menu">
<button type="button">최신순</button>
<button type="button">인기순</button>
<button type="button">조회순</button>
</div>
.filter-btn {
anchor-name: --filter-button;
}
.filter-menu {
position: absolute;
position-anchor: --filter-button;
position-area: bottom;
margin-top: 8px;
}
이 방식은 “이 메뉴는 이 버튼을 기준으로 열린다”는 관계가 코드에서 더 분명하게 보입니다. 템플릿을 수정할 때도 어떤 버튼과 어떤 메뉴가 연결되어 있는지 파악하기 쉬워집니다.
툴팁에도 사용할 수 있을까요?
툴팁도 기준 요소 옆에 작은 안내 박스를 띄우는 UI입니다. 아이콘 옆, 입력창 옆, 버튼 위쪽처럼 정확한 위치가 중요합니다.
<button type="button" class="help-btn">
?
</button>
<div class="help-tooltip">
입력한 정보는 상담 목적으로만 사용됩니다.
</div>
.help-btn {
anchor-name: --help-button;
}
.help-tooltip {
position: absolute;
position-anchor: --help-button;
position-area: right;
}
툴팁은 위치가 조금만 어긋나도 사용자가 어떤 요소에 대한 설명인지 헷갈릴 수 있습니다. 기준 요소와 안내 박스의 관계가 중요한 UI에서는 Anchor Positioning 개념을 이해해두면 좋습니다.
화면 밖으로 밀리는 문제도 확인해야 합니다
드롭다운이나 툴팁은 화면 가장자리에서 문제가 자주 생깁니다. 버튼은 오른쪽 끝에 있는데 메뉴가 오른쪽으로 더 펼쳐지면 일부가 화면 밖으로 나갈 수 있습니다.
Anchor Positioning에는 이런 상황을 고려해 대체 위치를 지정하는 개념도 있습니다. 예를 들어 기본은 아래쪽에 배치하되, 공간이 부족하면 위쪽이나 반대 방향으로 바꾸는 방식입니다.
.menu-panel {
position: absolute;
position-anchor: --menu-button;
position-area: bottom;
position-try-fallbacks: top, right, left;
}
이런 구조는 반응형 UI에서 특히 중요합니다. PC에서는 버튼 아래에 잘 보이던 메뉴가 모바일에서는 화면 아래로 밀릴 수 있기 때문입니다.
다만 fallback 관련 속성은 실제 지원 환경을 확인하면서 사용해야 합니다. 그래서 실무에서는 바로 전체 템플릿에 적용하기보다, 테스트 가능한 작은 UI부터 확인하는 것이 안전합니다.
지금 바로 absolute를 대체해야 할까요?
현재 안정적으로 작동하는 드롭다운이나 툴팁을 모두 바꿀 필요는 없습니다.
position: absolute는 여전히 실무에서 많이 쓰이고, 간단한 구조에서는 충분히 효율적입니다. 특히 브라우저 지원 범위를 넓게 고려해야 하는 홈페이지라면 기존 방식이 더 안전할 수 있습니다.
Anchor Positioning은 아래와 같은 상황에서 검토해볼 만합니다.
- 기준 버튼과 팝업 요소의 관계를 더 명확히 하고 싶을 때
- 여러 위치에서 반복되는 툴팁 UI를 정리하고 싶을 때
- popover와 함께 작은 레이어 UI를 구성할 때
- 화면 가장자리에서 위치가 어긋나는 문제를 줄이고 싶을 때
- 최신 CSS 기능을 테스트할 수 있는 프로젝트일 때
기존 absolute를 바로 버리는 방식보다, 새로운 UI나 테스트 가능한 영역에서 먼저 적용해보는 접근이 현실적입니다.
템플릿 수정 시 확인할 부분
HTML 템플릿이나 웹디자인 소스를 수정할 때는 드롭다운 위치가 왜 어긋나는지 먼저 확인해야 합니다. 무작정 top, left, z-index 값만 바꾸면 다른 화면에서 다시 문제가 생길 수 있습니다.
수정 전에는 아래 항목을 확인하는 것이 좋습니다.
- 드롭다운의 기준이 되는 버튼이 무엇인가?
- 현재 위치 기준이 부모 요소인지, 특정 버튼인지 확인했는가?
- 부모 요소에
position,overflow,transform속성이 적용되어 있는가? - 모바일에서 메뉴가 화면 밖으로 나가지 않는가?
- z-index 문제인지, 위치 기준 문제인지 구분했는가?
- 기존 JavaScript와 연결된 열림·닫힘 동작이 있는가?
- Anchor Positioning을 사용한다면 지원 환경과 fallback을 확인했는가?
드롭다운 위치 문제는 CSS 한 줄로 끝나 보이지만, 실제로는 HTML 구조, 부모 요소, 반응형 기준, 스크립트 동작이 함께 연결되는 경우가 많습니다.
자주 묻는 질문
드롭다운 위치는 기준 요소부터 확인해야 합니다
드롭다운과 툴팁은 작은 UI처럼 보이지만, 실제 화면에서는 위치가 매우 중요합니다. 버튼 아래에 떠야 할 메뉴가 어긋나거나, 모바일에서 화면 밖으로 밀리면 사용자는 기능을 제대로 사용하기 어렵습니다.
position: absolute는 익숙하고 안정적인 방식입니다. 다만 부모 요소 기준으로 위치가 잡히기 때문에 구조가 복잡해지면 수정이 어려워질 수 있습니다. CSS Anchor Positioning은 기준 요소와 배치 요소의 관계를 더 명확하게 표현할 수 있는 새로운 CSS 방식입니다.
디자인키트의 HTML 템플릿이나 웹디자인 소스를 수정할 때도 드롭다운, 툴팁, 더보기 메뉴처럼 기준 버튼 주변에 뜨는 UI를 확인할 일이 있습니다. 이때 기존 absolute 방식과 CSS Anchor Positioning의 차이를 이해하면 화면 크기나 배치 변화에 따라 위치가 어긋나는 문제를 더 정확히 판단할 수 있습니다.


