폼과 인터랙티브 컴포넌트 - by. UXKM

  • Publishing
  • SCSS
  • 실무 예제로 SCSS 마무리
  • 폼과 인터랙티브 컴포넌트
요약 설명

폼과 인터랙티브 컴포넌트는 여러 상태를 가질 수 있어 스타일 관리가 복잡합니다.
초급자가 가장 헷갈려하는 부분이지만, 상태를 클래스 구조로 체계적으로 표현하면 명확하게 관리할 수 있습니다.
상태가 많을수록 SCSS 구조가 왜 중요한지 체감할 수 있는 영역입니다.

이 페이지에서는 Input, Select, Checkbox, Radio 컴포넌트와 Focus, Error, Disabled 상태 관리, Helper/Error Message를 상세히 알아봅니다.

폼 컴포넌트 상태 관리

폼 컴포넌트는 여러 상태를 동시에 가질 수 있습니다.
예를 들어, InputFocus 상태이면서 동시에 Error 상태일 수 있습니다.
상태를 클래스 구조로 명확하게 표현하면, 각 상태의 스타일을 독립적으로 관리할 수 있고 조합도 가능합니다.

상태 클래스 구조
기본 상태: .input - 기본 스타일
Focus 상태: :focus 또는 .input--focused
Error 상태: .input--error - 유효성 검사 실패
Disabled 상태: :disabled 또는 .input--disabled
Success 상태: .input--success - 유효성 검사 통과

Input 컴포넌트

Input은 가장 기본적인 폼 요소입니다.
텍스트 입력 필드의 다양한 상태와 크기를 체계적으로 관리하는 방법을 알아봅니다.

기본 Input 스타일

Input의 기본 스타일을 정의합니다.

Input Focus 상태

Input이 포커스를 받았을 때의 스타일입니다.

Focus 상태에서는 테두리 색상을 변경하고 그림자를 추가하여 사용자의 주의를 끕니다.

Input Error 상태

입력값이 유효하지 않을 때의 스타일입니다.

Error 상태일 때도 Focus 상태와 조합될 수 있도록 스타일을 정의합니다.

Input Disabled 상태

Input이 비활성화되었을 때의 스타일입니다.

Input Size Modifier

Input의 크기를 조절하는 Modifier입니다.

Input 컴포넌트 적용 예시

※ 코드펜에서는 SCSS 파셜을 사용할 수 없으므로, 이 예시는 사용되는 토큰만을 하나의 SCSS 파일에 모아 작성한 예제입니다.

코드펜에서는 @use를 사용할 수 없으므로, 모든 토큰과 컴포넌트 스타일을 하나의 SCSS 파일에 작성합니다.
기본 Input, Focus 상태, Error 상태, Disabled 상태, Size Modifier (Small, Medium, Large)를 순서대로 보여줍니다.

Select 컴포넌트

Select는 드롭다운 선택 메뉴를 제공하는 폼 요소입니다.
Input과 유사한 스타일을 공유하면서도 Select만의 특성을 고려해야 합니다.

기본 Select 스타일

Select의 기본 스타일을 정의합니다.

Select는 appearance: none으로 기본 스타일을 제거하고 커스텀 스타일을 적용합니다.

Select 컴포넌트 적용 예시

※ 코드펜에서는 SCSS 파셜을 사용할 수 없으므로, 이 예시는 사용되는 토큰만을 하나의 SCSS 파일에 모아 작성한 예제입니다.

코드펜에서는 @use를 사용할 수 없으므로, 모든 토큰과 컴포넌트 스타일을 하나의 SCSS 파일에 작성합니다.
기본 Select, Focus 상태, Disabled 상태를 순서대로 보여줍니다.

Checkbox & Radio 컴포넌트

Checkbox와 Radio는 선택 여부를 나타내는 인터랙티브 요소입니다.
기본 스타일을 커스터마이징하고, 체크/선택 상태를 시각적으로 표현해야 합니다.

Checkbox 컴포넌트

Checkbox의 커스텀 스타일을 만드는 방법입니다.

실제 input은 숨기고, 커스텀 스타일의 체크박스를 만들어 :checked 상태에 따라 스타일을 변경합니다.

Checkbox 컴포넌트 적용 예시

※ 코드펜에서는 SCSS 파셜을 사용할 수 없으므로, 이 예시는 사용되는 토큰만을 하나의 SCSS 파일에 모아 작성한 예제입니다.

코드펜에서는 @use를 사용할 수 없으므로, 모든 토큰과 컴포넌트 스타일을 하나의 SCSS 파일에 작성합니다.
기본 Checkbox, 선택된 상태, Disabled 상태를 순서대로 보여줍니다.

Radio 컴포넌트

Radio는 Checkbox와 유사하지만 원형 모양을 사용합니다.

Radio 컴포넌트 적용 예시

※ 코드펜에서는 SCSS 파셜을 사용할 수 없으므로, 이 예시는 사용되는 토큰만을 하나의 SCSS 파일에 모아 작성한 예제입니다.

코드펜에서는 @use를 사용할 수 없으므로, 모든 토큰과 컴포넌트 스타일을 하나의 SCSS 파일에 작성합니다.
기본 Radio, 선택된 상태, Disabled 상태를 순서대로 보여줍니다.

Helper & Error Message

폼 필드 아래에 표시되는 도움말과 에러 메시지입니다.
사용자에게 입력 가이드를 제공하거나 에러를 안내하는 중요한 역할을 합니다.

Form Field 구조

Input과 메시지를 함께 관리하는 구조입니다.

HTML 구조 예시

위 SCSS 구조에 맞는 HTML 마크업입니다.

Helper & Error Message 적용 예시

※ 코드펜에서는 SCSS 파셜을 사용할 수 없으므로, 이 예시는 사용되는 토큰만을 하나의 SCSS 파일에 모아 작성한 예제입니다.

코드펜에서는 @use를 사용할 수 없으므로, 모든 토큰과 컴포넌트 스타일을 하나의 SCSS 파일에 작성합니다.
Helper 메시지Error 메시지가 포함된 폼 필드 예시를 보여줍니다.

정리

폼과 인터랙티브 컴포넌트 구성에 대해 알아본 내용을 정리합니다.

  • 상태 클래스 구조: 상태를 클래스로 명확하게 표현하여 관리
  • Input 컴포넌트: Focus, Error, Disabled 상태와 Size Modifier
  • Select 컴포넌트: Input과 유사한 스타일을 공유하면서 Select만의 특성 고려
  • Checkbox & Radio: 커스텀 스타일과 체크/선택 상태 표현
  • Helper & Error Message: Form Field 구조로 Input과 메시지를 함께 관리
  • 상태 조합: 여러 상태가 동시에 적용될 수 있도록 스타일 구성

다음 페이지에서는 테마 시스템(Light/Dark)을 구성하는 방법을 알아봅니다.