• 검색어를 입력해 주세요.
  • 검색어를 입력해 주세요.
디자인키트 0
블로그 전체목록
화살표

보고계신 기능이 적용된
템플릿이에요!

HTML소스를 구매하시면
전체 소스를 활용하실 수 있어요!

  • 템플릿을 찾지 못했어요!

400여개 디자인

더 많은 템플릿 보기

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 구조, 부모 요소, 반응형 기준, 스크립트 동작이 함께 연결되는 경우가 많습니다.

자주 묻는 질문

Q. CSS Anchor Positioning은 JavaScript 없이 사용할 수 있나요?

기본적인 위치 지정은 CSS로 처리할 수 있습니다. 다만 드롭다운을 열고 닫는 동작, 상태 관리, 데이터 처리 같은 기능은 HTML 구조나 JavaScript와 함께 구성해야 할 수 있습니다.

Q. absolute 방식은 이제 사용하지 않아도 되나요?

그렇지는 않습니다. position: absolute는 여전히 많이 쓰이는 방식이고, 간단한 드롭다운이나 툴팁에는 충분히 적합합니다. Anchor Positioning은 기준 요소와 팝업 요소의 관계를 더 명확하게 다루고 싶을 때 검토할 수 있는 선택지입니다.

Q. popover와 Anchor Positioning은 같이 사용할 수 있나요?

같이 사용할 수 있는 조합으로 볼 수 있습니다. popover가 열고 닫히는 작은 레이어 UI를 만들고, Anchor Positioning이 그 레이어를 기준 요소 주변에 배치하는 역할을 할 수 있습니다.

Q. 브라우저 지원은 꼭 확인해야 하나요?

확인하는 편이 좋습니다. Anchor Positioning은 비교적 최신 CSS 기능이라 프로젝트의 지원 브라우저 범위에 따라 적용 여부가 달라질 수 있습니다. 필요하다면 기존 absolute 방식이나 JavaScript 기반 위치 계산을 fallback으로 고려해야 합니다.

드롭다운 위치는 기준 요소부터 확인해야 합니다

드롭다운과 툴팁은 작은 UI처럼 보이지만, 실제 화면에서는 위치가 매우 중요합니다. 버튼 아래에 떠야 할 메뉴가 어긋나거나, 모바일에서 화면 밖으로 밀리면 사용자는 기능을 제대로 사용하기 어렵습니다.

position: absolute는 익숙하고 안정적인 방식입니다. 다만 부모 요소 기준으로 위치가 잡히기 때문에 구조가 복잡해지면 수정이 어려워질 수 있습니다. CSS Anchor Positioning은 기준 요소와 배치 요소의 관계를 더 명확하게 표현할 수 있는 새로운 CSS 방식입니다.

디자인키트의 HTML 템플릿이나 웹디자인 소스를 수정할 때도 드롭다운, 툴팁, 더보기 메뉴처럼 기준 버튼 주변에 뜨는 UI를 확인할 일이 있습니다. 이때 기존 absolute 방식과 CSS Anchor Positioning의 차이를 이해하면 화면 크기나 배치 변화에 따라 위치가 어긋나는 문제를 더 정확히 판단할 수 있습니다.


블로그 전체목록
디자인키트 카카오상담