모바일 애플리케이션 개발에 필요한 UI 컴포넌트, 속성, 액션에 대한 종합 가이드
Text는 사용자 인터페이스에서 정보를 표시하는 기본적인 요소입니다. 다양한 크기, 두께, 색상으로 표현할 수 있으며, 제목, 본문, 레이블 등 다양한 용도로 사용됩니다.
Button은 사용자가 액션을 트리거할 수 있는 인터랙티브 요소입니다. 클릭하거나 탭하면 지정된 작업을 수행합니다.
Icon Button은 텍스트 대신 아이콘을 사용하는 버튼입니다. 공간을 절약하면서도 직관적인 의미를 전달할 수 있습니다.
Outlined Button은 배경이 없고 테두리 외곽선을 사용하여 강조하는 버튼입니다. 일반적으로 보조 액션이나 덜 중요한 액션에 사용됩니다.
Input(또는 TextField)은 사용자로부터 텍스트 데이터를 입력받는 UI 요소입니다. 다양한 형식의 데이터를 텍스트, 숫자, 이메일, 비밀번호 등을 수집할 수 있습니다.
Radio Button은 사용자가 여러 옵션 중 하나를 선택할 수 있는 UI 요소입니다. 동일한 그룹 내에서는 한 번에 하나의 라디오 버튼만 선택할 수 있습니다.
Check Box는 사용자가 여러 옵션 중 여러 개를 선택할 수 있는 UI 요소입니다. 각 체크박스는 독립적으로 선택하거나 해제할 수 있습니다.
Dropdown은 클릭하면 옵션 목록을 표시하는 UI 요소입니다. 공간을 절약하면서 여러 옵션을 제공할 수 있습니다.
Selector(또는 Select)는 여러 옵션 중 하나를 선택할 수 있는 드롭다운 형태의 UI 요소입니다. 드롭다운 메뉴처럼 보이며, 주로 공간 절약이 중요시되어 있습니다.
Form은 사용자로부터 데이터를 수집하기 위한 여러 입력 요소를 그룹화한 UI 컴포넌트입니다. 텍스트 필드, 체크박스, 라디오 버튼 등 다양한 입력 요소를 포함할 수 있습니다.
Slider는 사용자가 지정된 범위 내에서 값을 선택할 수 있는 UI 요소입니다. 드래그 가능한 핸들을 사용해 값을 조절합니다.
Divider(또는 Separator)는 콘텐츠나 섹션을 시각적으로 구분하는 가로 또는 세로 선입니다. UI의 구조와 계층을 명확하게 하는 데 도움을 줍니다.
Date Picker는 사용자가 날짜를 선택할 수 있는 캘린더 형태의 UI 요소입니다. 날짜 입력을 직관적이고 사용하기 쉽게 만들어줍니다.
Time Picker는 사용자가 시간을 선택할 수 있는 UI 요소입니다. 시, 분, 초와 AM/PM을 선택할 수 있는 인터페이스를 제공합니다.
Table은 행과 열로 구성된 데이터를 표시하는 UI 요소입니다. 구조화된 정보를 효과적으로 보여주는 데 사용됩니다.
Progress Bar는 작업의 진행 상태를 시각적으로 표시하는 UI 요소입니다. 사용자에게 작업이 얼마나 완료되었는지 알려줍니다.
Padding과 Margin은 UI 요소의 공간을 제어하는 CSS 속성입니다.
사용자가 요소를 짧게 누르거나 터치하는 기본적인 상호작용입니다. React에서는 주로 onClick 이벤트로 처리되며, 디바이스 플랫폼에 따라 다음과 같이 부릅니다.
드래그(Drag)는 요소를 클릭하고 마우스 버튼을 누른 상태에서 위치를 변경하는 사용자 인터랙션 방식입니다. React에서는 마우스 이벤트나 HTML5 Drag & Drop API를 사용하여 구현되며, 주로 아이템 재정렬, 위치 변경, 요소의 이동 등에 사용됩니다.
제스처(Gesture)는 터치스크린이나 트랙패드를 통해 손가락의 움직임을 해석하여 인터페이스를 제어하는 방식입니다. React에서는 Touch Events API와 마우스 이벤트를 조합하여 구현하며, 일반적으로는 탭, 스와이프, 핀치/스프레드, 더블 탭, 길게 누르기 등이 포함됩니다.
키보드 입력은 물리적인 또는 가상 키보드를 통해 애플리케이션과 통신하는 방식입니다. React에서 KeyboardEvent를 통해 처리하며, 데스크톱 환경에서 주요 입력 방식이며, 모바일 환경에서 키보드 입력 및 기능 사용 기능을 입력합니다.
카드 뷰는 관련된 정보를 담는 컨테이너로, 주로 이미지, 제목, 간략한 설명과 액션을 포함합니다. 정보를 시각적으로 구분하고 그룹화하여 사용자가 콘텐츠를 쉽게 스캔하고 인터랙션할 수 있게 합니다.
리스트 뷰는 항목들을 세로로 나열하는 UI 패턴으로, 주로 텍스트와 간단한 컨트롤로 구성됩니다. 사용자들이 여러 항목을 검색하고 선택하며 작업을 수행하는 효율적인 방법을 제공합니다.
Grid View는 2차원 격자 형태로 아이템들을 배치하는 레이아웃 컴포넌트입니다. 이미지 갤러리, 상품 목록, 카드 레이아웃 등에 주로 사용됩니다.
스크롤뷰는 화면에 표시 가능한 영역보다 많은 콘텐츠를 담을 수 있는 컨테이너로 사용자가 스크롤하여 내용을 탐색할 수 있게 합니다. 수직, 수평, 또는 양방향 스크롤을 지원합니다.
위아래로 스크롤하는 가장 일반적인 형태
좌우로 스크롤하는 형태, 갤러리나 캐러셀에 자주 사용
수직과 수평 모두 스크롤 가능한 형태, 큰 데이터 표에 사용
한 번에 한 페이지씩 스크롤되는 형태
무한 스크롤을 사용하면 페이지 단위의 전달을 없이 자동으로 추가 콘텐츠를 로드하는 UX 패턴입니다. 별도로 페이지 이동이나 '더보기' 버튼 없이 연속적인 콘텐츠 탐색 경험을 제공합니다.
드로어(Drawer)는 화면 가장자리에서 슬라이딩하여 나타나는 패널로, 주로 내비게이션이나 추가 컨트롤을 위해 사용됩니다. 일반적으로 햄버거 메뉴 아이콘이나 스와이프 제스처로 열고 닫을 수 있습니다.
화면 좌측 또는 우측에서 슬라이드, 주로 내비게이션에 사용
화면 아래에서 위로 슬라이드, 추가 액션이나 컨텐츠에 사용
화면 위에서 아래로 슬라이드, 알림이나 검색에 사용
햄버거 아이콘으로 임시로 열고 오버레이 클릭으로 닫힘
항상 화면에 표시되고 닫히지 않음 (주로 데스크톱에서 사용)
드로어는 메인 콘텐츠에 비해 덜 중요한 느낌을 주어야 합니다
열고 닫는 부드럽고 자연스러운 인터페이스 제공
화면의 부분적인 영역을 차지하여 컨텍스트 유지
닫기 버튼, 오버레이 영역 또는 스와이프 제스처 등 다양한 닫기 옵션 제공
열리거나 닫힐 때 부드러운 애니메이션으로 상태 변환 표시
중요도에 따라 콘텐츠를 구성하고 스크롤이 필요한 경우 분명한 스크롤 표시
하단 네비게이션은 모바일 앱에서 화면 하단에 위치하는 네비게이션 바로, 앱의 주요 탐색 기능을 제공합니다. 사용자가 항상 쉽게 접근할 수 있는 영역에 주요 기능을 배치하여 사용성을 높이는 UI 패턴입니다.
아이콘과 텍스트 조합, 활성 탭을 강조 표시
아이콘과 텍스트를 더 구분되도록 배치
활성 탭은 확장되고 나머지는 축소, 탭 레이블은 활성 탭에만 표시
공간 절약을 위해 아이콘만 사용하는 최소화의 디자인
알림이나 카운터를 표시하는 배지가 포함된 디자인
바텀 시트는 화면 하단에서 올라오는 패널로 화면 아래에서 위로 추가적인 콘텐츠나 작업을 표시합니다. 모달(Modal)처럼 사용하여 문맥에 맞는 화면에서 호출하여 사용하는 UI 패턴입니다.
일반적인 바텀 시트로 추가 정보나 설정을 표시
배경을 어둡게 하여 콘텐츠와 인터랙션 차단
드래그 제스처로 높이를 확장 가능한 형태
길이가 긴 콘텐츠를 표시하기 위해 스크롤 제공
여러 작업 옵션을 리스트로 제공
앱바(App Bar)는 화면 상단에 위치한 컴포넌트로, 현재 화면의 제목과 함께 네비게이션, 검색, 액션 버튼과 같은 주요 기능을 제공합니다. 일반적으로 '툴바(Toolbar)' 또는 '네비게이션 바(Navigation Bar)'라고도 불립니다.
가장 일반적인 형태로, 제목과 액션 버튼을 포함합니다
항목 선택 시 나타나며, 선택된 항목에 대한 액션을 제공합니다
검색 기능을 강조한 형태로, 검색창이 중앙에 배치됩니다
추가 콘텐츠나 탭을 포함하는 확장된 높이의 앱바입니다.
스크롤 시 높이가 축소되어 화면 공간을 효율적으로 사용합니다
탭바(Tab Bar)는 일관된 계층 구조에서 여러 화면을 전환하는 콘텐츠 전환을 위한 네비게이션 컴포넌트입니다. 사용자에게 쉽게 관리할 수 있는 콘텐츠간을 이동할 수 있도록 카테고리별로 구분하여 직관적인 인터페이스를 제공합니다.
일반적인 텍스트만 있는 단순 인디케이터로 구성된 스타일
아이콘과 텍스트 결합, 세로로 언더라인 인디케이터 표시
많은 탭 항목을 한번에 가로로 스크롤 가능한 방식
둥근 모서리의 태블릿 전체 배경 강조하는 방식
애니메이션 인디케이터가 함께 동작하며 부드럽게 전환
Floating Action Button(FAB)은 화면 위에 떠 있는 원형 버튼으로, 사용자가 현재 화면에서 취할 수 있는 주요 액션을 표시합니다. 일반적으로 화면의 오른쪽 하단이나 중앙 하단에 위치하며, 가장 중요하거나 자주 사용하는 작업에 빠르게 접근할 수 있게 합니다.
일반적인 크기의 원형 버튼으로 아이콘만 표시합니다.
새 메시지 작성, 새 항목 추가 등 주요 액션
지름 56dp의 표준 크기, 주요 액션에 사용
지름 40dp의 작은 크기, 보조 액션에 사용
텍스트와 아이콘을 함께 표시하는 직사각형 형태
클릭 시 여러 관련 액션을 보여주는 확장 가능 FAB
FAB이 떠 있는 효과를 강조하기 위해 그림자 사용
FAB의 기능을 직관적으로 이해할 수 있는 아이콘 선택
애플리케이션의 브랜드 이미지와 디자인 언어 유지
클릭, 호버, 확장 등 부드러운 애니메이션 사용
터치 조작에 최적화된 크기와 간격 확보
검색바(Search Bar)는 사용자가 애플리케이션 내에서 특정 콘텐츠를 검색할 수 있게 해주는 사용자 인터페이스 요소입니다. 일반적으로 텍스트 입력 필드와 검색 아이콘으로 구성되며, 필요에 따라 음성 검색, 필터 옵션 등 추가 기능을 포함하기도 합니다.
항상 표시되는 기본적인 검색 필드
아이콘을 클릭하면 확장되는 검색바
탑바에 통합된 형태의 검색 필드
추가 필터 옵션을 포함한 검색바
검색어 입력 시 제안을 표시
히어로(Hero)는 웹사이트의 최상단 화면에 위치하는 큰 배너 영역으로, 사용자의 주목을 끌고 핵심 메시지를 전달하는 주요 섹션입니다. 일반적으로 강렬한 이미지, 영상 또는 그래픽 요소와 함께 헤드라인, 간결한 설명, 그리고 행동 유도 버튼(CTA)으로 구성됩니다.
웹사이트의 첫인상을 결정하는 히어로 섹션으로 방문자의 주의를 끌고 핵심 메시지를 효과적으로 전달합니다.
배경 이미지와 왼쪽 정렬된 텍스트로 구성된 일반적인 히어로 섹션입니다. 대부분의 웹사이트에서 범용적으로 사용됩니다.
배경 이미지와 텍스트, 오버레이를 사용하는 기본 상태
모든 요소가 중앙으로 정렬되어 깔끔하고 집중적인 레이아웃
화면을 반으로 나누어 텍스트와 이미지를 균등하게 배치
움직이는 영상을 배경으로 사용하여 몰입감을 제공
화면 전체를 채우는 큰 히어로 섹션
동적 요소와 애니메이션을 사용하는 인터랙티브한 레이아웃
주요 메시지를 전달하는 강력하고 간결한 제목
헤드라인을 보완하는 부가 설명
사용자의 다음 행동을 유도하는 버튼
주의를 끌고 메시지를 강화하는 시각적 요소
텍스트의 가독성을 향상시키기 위한 반투명 레이어
히어로 섹션 위에 포함되는 네비게이션 컴포넌트
히어로 섹션이 전달하고자 하는 핵심 메시지와 목표를 명확하게 설정
중요한 요소를 시각적으로 강조하여 사용자의 시선 유도
불필요한 단어 제거하고 핵심 메시지를 명확하게 전달
브랜드 이미지와 맞는 전문적인 관련성과 시각적 요소 선택
다양한 화면 기기에서 효과적으로 동작하는 반응형 레이아웃 사용
이미지 최적화와 지연 로딩 기법으로 성능 향상
다양한 변수를 테스트하여 최적의 결과 도출
// 기본 히어로 섹션 구현
import React from 'react';
const BasicHero: React.FC = () => {
const handleLearnMore = () => {
console.log('세부사항 보기 버튼 클릭됨');
};
return (
<div className="h-96 bg-gray-200 flex items-center relative overflow-hidden">
{/* 배경 이미지 영역 */}
<div className="absolute inset-0">
<div className="w-full h-full bg-gray-300 flex items-center justify-center">
<span className="text-4xl text-gray-500" role="img" aria-label="배경 이미지">🖼️</span>
</div>
</div>
{/* 그라디언트 오버레이 */}
<div className="absolute inset-0 bg-gradient-to-r from-[#49bcf3]/90 to-transparent z-10"></div>
{/* 콘텐츠 */}
<div className="relative z-20 text-white p-6 max-w-lg">
<h1 className="text-2xl font-bold mb-2">기본 히어로 섹션</h1>
<p className="text-white/80 mb-4 text-sm leading-relaxed">
웹사이트의 첫인상을 결정하는 히어로 섹션으로 방문자의 주의를 끌고 핵심 메시지를 효과적으로 전달합니다.
</p>
<button
onClick={handleLearnMore}
className="bg-white text-[#49bcf3] px-6 py-3 rounded-md font-medium text-sm hover:bg-gray-100 transition-colors focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-[#49bcf3]"
>
세부사항 보기
</button>
</div>
</div>
);
};
export default BasicHero;UI 컴포넌트와 상호작용 방식을 이해하는 것은 효과적인 디자인과 개발의 핵심입니다.
팀 전체가 동일한 UI 언어를 사용하면 소통과 협업이 원활해집니다.
적절한 UI 요소 선택은 직관적이며 사용하기 쉬운 인터페이스로 이어집니다.
다양한 상호작용 방식을 지원하여 모든 사용자가 접근할 수 있는 UI를 구축하세요.
잘 설계된 컴포넌트 시스템은 개발 효율성과 디자인 일관성을 향상시킵니다.
조직 전체에서 사용할 수 있는 통일된 컴포넌트 라이브러리 개발
실제 사용자와 함께 UI 컴포넌트와 상호작용 테스트
지속적인 학습을 통해 UI 디자인 역량 향상
감사합니다