본문 바로가기

👩‍💻/개발

FE 기능 - CSS 앵커 포지셔닝 API 사용하기

CSS 앵커 포지셔닝(Anchor Positioning) API는 HTML 요소를 특정 기준(anchor) 요소를 기준으로 위치를 지정할 수 있도록 해주는 새로운 CSS 기능입니다. 이를 활용하면 툴팁, 팝오버, 주석 라벨, 동적 차트 레이블 등을 쉽게 구현할 수 있습니다.

CSS 앵커 포지셔닝 API의 주요 특징

  1. 기준(anchor) 요소 설정
    특정 HTML 요소를 기준(anchor)으로 지정하고, 다른 요소(자식 요소)를 이 기준에 상대적으로 배치할 수 있습니다.
    예를 들어, 버튼 위에 툴팁을 띄우거나, 특정 위치에 팝오버를 표시할 때 유용합니다.
  2. 레이어 인터페이스 구현
    이 API를 사용하면 제3자 라이브러리 없이도 툴팁이나 팝오버 같은 레이어 기반 인터페이스를 간단히 만들 수 있습니다.
  3. 여러 기준 요소 연결
    하나의 요소를 여러 기준(anchor) 요소에 연결하고, 기준 요소 크기에 따라 동적으로 자식 요소의 크기와 위치를 조정할 수도 있습니다.

활용 예

  • 툴팁: 마우스를 올렸을 때 텍스트 상자가 버튼 위에 정확히 뜨도록 설정.
  • 팝오버: 특정 버튼을 눌렀을 때 팝오버가 원하는 위치에 나타나도록 구현.
  • 차트 라벨: 데이터 시각화 차트에서 특정 데이터 포인트 옆에 동적으로 레이블 배치.

주의점

  • 현재 브라우저 지원이 제한적입니다. 따라서 이 기능을 사용할 때는 폴리필(polyfill) 또는 다른 대체 방식을 함께 고려하는 것이 좋습니다.
  • Una Kravets의 가이드에서는 이 API의 작동 방식, 다중 앵커 사용 방법, 그리고 주의사항에 대해 자세히 다루고 있으니 참고하면 좋습니다.

요약

CSS 앵커 포지셔닝 API는 기존의 JavaScript 또는 복잡한 CSS를 사용하지 않고도 손쉽게 다이내믹한 인터페이스를 구현할 수 있는 기능입니다. 향후 브라우저 지원이 확대되면 웹 개발에서 더 폭넓게 사용될 전망입니다.

 

샘플코드

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Popover Example</title>
  <style>
    /* 기준(anchor) 요소 */
    .popover-button {
      position: relative;
      padding: 10px 20px;
      background-color: #28A745;
      color: white;
      border: none;
      border-radius: 5px;
      cursor: pointer;
    }

    /* 팝오버 요소 */
    .popover {
      position: anchor;
      anchor-name: popover;
      anchor-target: .popover-button;
      anchor-position: bottom center; /* 기준 요소 하단 중앙 */
      padding: 10px;
      background-color: #FFF;
      box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
      border-radius: 5px;
      display: none;
    }

    /* 버튼 클릭 시 팝오버 표시 */
    .popover.show {
      display: block;
    }
  </style>
  <script>
    // 팝오버 버튼 클릭 시 동작
    document.addEventListener('DOMContentLoaded', () => {
      const button = document.querySelector('.popover-button');
      const popover = document.querySelector('.popover');

      button.addEventListener('click', () => {
        popover.classList.toggle('show');
      });
    });
  </script>
</head>
<body>
  <button class="popover-button">팝업 보기 버튼</button>
  <div class="popover">여기는 팝업 영역입니다.</div>
</body>
</html>

 

실행 화면
팝업 보기 버튼 클릭 화면