본문 바로가기
무료 API 및 오픈소스 리뷰

[UI/IX 컴포넌트 오픈소스 #04] "화려한 애플(Apple) 웹사이트의 비밀", Aceternity UI & Magic UI

by 코드메이트 2026. 4. 2.

안녕하세요! 여러분의 밋밋한 포트폴리오에 생명력을 불어넣어 줄 프론트엔드 심폐소생술사, 웹 개발자입니다.

프론트엔드 개발자로 일하다 보면 기획자나 클라이언트에게 가장 많이, 그리고 가장 두려운 요구사항을 듣게 됩니다. "개발자님, 우리 메인 홈페이지... 그, 애플(Apple) 웹사이트처럼 만들어주시면 안 될까요? 스크롤 내리면 글자가 스르륵~ 나타나고, 마우스 움직이면 빛이 막 따라다니는 거요!"

 

과거의 저였다면 이 말을 듣자마자 식은땀을 흘리며 도망쳤을 겁니다. 순수 CSS의 @keyframes를 이용해 애니메이션을 짜본 분들은 아실 겁니다. 코드는 끝도 없이 길어지고, 브라우저마다 호환성도 다르고, 무엇보다 스크롤 위치나 마우스 좌표를 자바스크립트로 계산해서 화면을 움직이게 만드는 것은 엄청난 렌더링 성능 저하를 가져오기 때문이죠.

 

하지만 2026년 현재, 우리는 더 이상 두려워할 필요가 없습니다. 지난 3편에서 배운 '복사해서 내 마음대로 쓰는' Shadcn UI의 철학을 그대로 이어받아, 화려한 인터랙션(애니메이션)의 끝판왕을 보여주는 마법의 오픈소스들이 등장했기 때문입니다.

오늘은 여러분의 개인 프로젝트와 포트폴리오를 단숨에 실리콘밸리 스타트업 수준으로 끌어올려 줄 'Aceternity UI' 'Magic UI', 그리고 이들을 움직이는 심장인 'Framer Motion'의 비밀을 아주 친절하게 파헤쳐 보겠습니다.

애플 웹사이트처럼 스크롤에 따라 부드럽게 나타나는 화려한 웹 애니메이션 효과

 

 

1. "CSS 애니메이션은 잊어라" – 마법의 엔진, Framer Motion

Aceternity UI와 Magic UI가 얼마나 화려한지 구경하기 전에, 이들이 도대체 어떤 원리로 부드럽게 움직이는지 그 '엔진'을 알아야 합니다. 이 화려한 오픈소스들의 뼈대를 이루는 핵심 기술은 바로 'Framer Motion (프레이머 모션)'이라는 React 전용 애니메이션 라이브러리입니다.

React 환경에서는 상태(State)가 수시로 변하기 때문에, 기존의 딱딱한 CSS 애니메이션을 적용하기가 매우 까다롭습니다. 이때 Framer Motion은 기존 HTML 태그 앞에 motion. 이라는 단어 하나만 붙여주면(예: <motion.div>) 그 태그를 완벽하게 통제할 수 있는 마법을 부립니다.

복잡한 수학 계산이나 타이머(setTimeout) 함수 없이, 그저 "여기서부터 여기까지 1초 동안 부드럽게 이동해!"라고 선언만 해주면 엔진이 알아서 60프레임의 부드러운 애니메이션을 만들어주는 것이죠.

 

Framer Motion의 initial과 animate 속성을 이용한 텍스트 애니메이션 원리

 

2. "복붙 한 번에 내 사이트가 애플로 변한다" – Aceternity UI

Framer Motion이 좋은 건 알겠는데, 그걸로 언제 3D 효과를 만들고 스크롤 애니메이션을 깎고 있을까요? 걱정하지 마세요. 천재 개발자들이 이미 Framer Motion과 Tailwind CSS를 버무려서, 당장 쓸 수 있는 화려한 컴포넌트들을 뷔페처럼 차려놓은 곳이 있습니다. 바로 Aceternity UI (에이서터니티 UI) 입니다.

이 사이트에 들어가 보시면 입이 떡 벌어집니다. 텍스트가 타자 치듯 써지는 타이핑 효과, 마우스 스크롤에 따라 카드가 3D로 뒤집히는 핀(Pin) 효과, 배경에 신비로운 빛 줄기가 쏟아지는 배경 애니메이션 등 수십 가지의 효과가 있습니다. 사용법은 Shadcn UI와 똑같습니다. 마음에 드는 효과를 고르고, 코드를 복사해서 내 프로젝트에 붙여넣기만 하면 끝입니다.

포트폴리오의 첫 화면(Hero Section)에 적용하면 면접관의 시선을 단번에 사로잡을 수 있는 '텍스트 위로 떠오르기 (Fade Up)' 코드를 예시로 살펴볼까요?

 

[텍스트 Fade Up 애니메이션 뼈대 분석]

import { motion } from "framer-motion";

export function HeroText() {
  return (
    <motion.h1
      // 1. 애니메이션이 시작되기 전 최초의 상태
      initial={{ opacity: 0, y: 20 }}
      
      // 2. 최종적으로 도달해야 할 목표 상태
      animate={{ opacity: 1, y: 0 }}
      
      // 3. 어떻게 움직일 것인가? (속도와 지연 시간)
      transition={{ duration: 0.8, delay: 0.2, ease: "easeInOut" }}
      
      className="text-4xl font-bold text-center"
    >
      프론트엔드의 새로운 시대를 엽니다.
    </motion.h1>
  );
}

 

이 코드를 코딩을 모르는 기획자도 이해할 수 있도록 한글로 아주 쉽게 번역해 드리겠습니다!

  • initial={{ opacity: 0, y: 20 }} : "이 글자는 처음에 투명도(opacity)가 0이라서 아예 안 보여야 하고, 원래 위치보다 20픽셀 아래(y: 20)에 숨어있어라!" 라는 뜻입니다.
  • animate={{ opacity: 1, y: 0 }} : "화면이 켜지면 짠! 하고 투명도는 1(완전 선명함)이 되고, y축은 0(원래 있어야 할 제자리)으로 올라와라!" 라는 뜻입니다.
  • transition={{ duration: 0.8, delay: 0.2, ease: "easeInOut" }} : "이 움직임은 너무 빠르지도 느리지도 않게 딱 0.8초(duration) 동안 진행해 줘. 아, 그런데 페이지가 켜지자마자 훅 올라오면 촌스러우니까, 0.2초(delay) 정도 뜸을 들였다가 우아하게 시작해 줘. 그리고 움직일 때는 기계처럼 딱딱하게 멈추지 말고 시작과 끝을 부드럽게(easeInOut) 해줘!"

 

어떠신가요? 단 세 줄의 속성값만으로, 수백 줄의 자바스크립트 스크롤 이벤트를 짜야만 가능했던 애플 감성의 애니메이션이 완벽하게 구현되었습니다.

 

3. "디테일의 악마" – 마이크로 인터랙션의 왕, Magic UI

Aceternity UI가 큼직큼직하고 웅장한 화면을 만들어준다면, Magic UI (매직 UI)는 사용자가 마우스를 올렸을 때의 버튼 테두리 빛 반사, 숫자가 스르륵 올라가는 애니메이션(Animated Number), 은은하게 돌아가는 그라데이션 테두리(Bento Grid) 등 작지만 강력한 '마이크로 인터랙션'을 담당하는 오픈소스입니다.

예를 들어, Magic UI에서 제공하는 '빛나는 카드(Magic Card)' 코드를 뜯어보면, 자바스크립트의 onMouseMove 이벤트를 이용해 현재 사용자의 마우스 X, Y 좌표를 실시간으로 추적합니다. 그리고 그 좌표값을 테일윈드의 bg-[radial-gradient](원형 그라데이션) 위치값에 주입하여, 마치 마우스를 따라 손전등 불빛이 따라다니는 듯한 엄청난 질감을 만들어냅니다. 이걸 생짜 코드로 처음부터 짜려면 며칠이 걸리겠지만, 우리는 그저 복사해서 쓰면 됩니다.

 

마무리하며: 과유불급(過猶不及), 애니메이션은 양념일 뿐!

오늘 배운 Aceternity UI와 Magic UI를 결합하면 당장 내일이라도 실리콘밸리 IT 기업처럼 화려하고 멋진 웹사이트를 뚝딱 만들어낼 수 있습니다.

하지만 주의할 점이 있습니다. 너무 신기하다고 해서 한 화면에 3D가 돌아가고, 빛이 번쩍거리고, 글자가 날아다니는 효과를 떡칠하게 되면 어떻게 될까요? 브라우저의 연산량이 폭발하여 스마트폰이 뜨거워지고, 프레임이 뚝뚝 끊기는 최악의 사용자 경험(UX)을 주게 됩니다. 애니메이션은 스테이크에 뿌리는 소금이나 후추 같은 '양념'이어야지, 메인 요리가 되어서는 안 됩니다. 중요한 시선을 끌어야 하는 헤더나 주요 버튼에만 포인트로 사용하시기를 강력히 권장합니다.

 

자, 지금까지 눈에 보이는 화려한 껍데기와 애니메이션을 다루었습니다. 다음 제5편에서는, 정반대로 껍데기는 하나도 없고 오직 '뼈대와 기능'만 제공하여 개발자의 접근성(Accessibility) 고민을 완벽하게 해결해 주는 마법의 도구, 'Headless UI'의 세계로 여러분을 안내하겠습니다. 프론트엔드의 진짜 깊이를 알 수 있는 다음 편도 기대해 주세요!

(지금까지 프론트엔드 애니메이션 오픈소스에 대해 알아보았습니다. 본 포스팅은 제가 직접 실무와 사이드 프로젝트에서 해당 UI들을 적용해 보며 겪은 경험을 바탕으로 작성되었습니다. 무분별한 애니메이션 남용은 웹 접근성과 성능을 저하시킬 수 있으므로 주의하시기 바랍니다.)

 

[UI/IX 컴포넌트 오픈소스 #05] "접근성(A11y)이 돈이 되는 시대", Headless UI의 숨겨진 힘

안녕하세요! 겉으로 보이는 화려한 디자인보다, 보이지 않는 곳에서 묵묵히 돌아가는 견고한 로직의 아름다움을 사랑하는 프론트엔드 사수, 웹 개발자입니다.지난 4편에서는 애플(Apple) 웹사이

code-bricks.tistory.com