diff --git "a/\352\270\260\354\210\240\353\270\224\353\241\234\352\267\270/_posts/2024-10-11-floatingUI.md" "b/\352\270\260\354\210\240\353\270\224\353\241\234\352\267\270/_posts/2024-10-11-floatingUI.md" index 6c1c399..08f4853 100644 --- "a/\352\270\260\354\210\240\353\270\224\353\241\234\352\267\270/_posts/2024-10-11-floatingUI.md" +++ "b/\352\270\260\354\210\240\353\270\224\353\241\234\352\267\270/_posts/2024-10-11-floatingUI.md" @@ -4,7 +4,7 @@ title: "Floating UI 소개" author: "김승태" categories: "프론트엔드 기술블로그" banner: - image: 썸네일로 넣고 싶은 이미지 링크 + image: assets/images/post/2023-11-05.webp background: "#000" height: "100vh" min_height: "38vh" @@ -14,8 +14,6 @@ banner: ## Floating Element란? -Floating UI를 소개하기 앞서 먼저 Floating Element에 대해서 말하고자 합니다. - Floating Element는 화면의 기본적인 문서 흐름에서 벗어나서, 다른 콘텐츠 위에 배치되는 UI 요소들을 말합니다. 보통 사용자가 특정 상호작용을 할 때 동적으로 나타나며, 화면의 특정 부분에 위치해 있거나, 특정 기준 (마우스 위치, 텍스트 필드 등)에 따라 위치가 조정됩니다. 여기서 말하는 floating element의 예시는 다음과 같습니다. @@ -59,38 +57,85 @@ function App() { `refs.setFloating` 는 floating element에 사용하는 함수입니다. -다양한 요구사항을 충족하기 위해 useFloating은 아래와 같은 다양한 return value와 option이 존재합니다. 자세한 예시는 [공식 문서](https://floating-ui.com/docs/useFloating)에 나와있습니다. +다양한 요구사항을 충족하기 위해 useFloating은 아래와 같은 다양한 API와 옵션이 존재합니다. 자세한 예시는 [공식 문서](https://floating-ui.com/docs/useFloating)에 나와있습니다. **return value** ```tsx interface UseFloatingReturn { + /** + * 이 context에는 관련 Hook과 컴포넌트에 제공되는 컨텍스트 데이터가 포함되어 있습니다. + * useHover, useClick, useDismiss 등의 다른 hook을 사용할 때 해당 context를 이용합니다. + */ context: FloatingContext; - // 이 context에는 관련 Hook과 컴포넌트에 제공되는 컨텍스트 데이터가 포함되어 있습니다. - // useHover, useClick, useDusmiss 등의 다른 hook을 사용할 때 해당 context를 이용합니다. + + /** + * reference에 대한 floating의 최종 배치입니다. + * 옵션에서 전달된 것과 달리 이 옵션은 flip()과 같은 미들웨어에 의해 변경될 수 있습니다. + */ placement: Placement; - // reference에 대한 floating 의 최종 배치입니다. - // 옵션에서 전달된 것과 달리 이 옵션은 flip()과 같은 미들웨어에 의해 변경될 수 있습니다. - strategy: Strategy; // floating element의 포지셔닝 전략입니다. - x: number; // floating element의 최종 x 좌표입니다. - y: number; // floating element의 최종 y 좌표입니다. - middlewareData: MiddlewareData; // 사용된 미들웨어에서 제공하는 데이터입니다. - isPositioned: boolean; // floating element가 아직 위치가 지정되지 않았는지 여부입니다. - update(): void; // floating element의 위치를 수동으로 업데이트하는 함수입니다. - floatingStyles: React.CSSProperties; // floating element에 적용해야 하는 스타일입니다. - // inline으로 적용합니다. ex)
+ + /** + * floating element의 최종 x 좌표입니다. + */ + strategy: Strategy; + + /** + * floating element의 최종 x 좌표입니다. + */ + x: number; + + /** + * floating element의 최종 y 좌표입니다. + */ + y: number; + + /** + * 사용된 미들웨어에서 제공하는 데이터입니다. + */ + middlewareData: MiddlewareData; + + /** + * floating element가 아직 위치가 지정되지 않았는지 여부입니다. + */ + isPositioned: boolean; + + /** + * floating element의 위치를 수동으로 업데이트하는 함수입니다. + */ + update(): void; + + /** + * floating element에 적용해야 하는 스타일입니다. + * inline으로 적용합니다. 예: + */ + floatingStyles: React.CSSProperties; + refs: { + /** + * reference로 지정한 element입니다. 예: ref.reference.current? + */ reference: React.MutableRefObject