Notice
Recent Posts
Recent Comments
Link
코드로 우주평화
React와 Tailwind CSS로 간단한 애니메이션 구현하기 본문
반응형
이번 글에서는 React와 Tailwind CSS를 사용해서 간단한 애니메이션과 상태 관리를 구현하는 방법을 알아보겠습니다.
본격적인 설명에 앞서 다음 두 가지 용어를 정리하고 넘어가겠습니다.
- useState : 컴포넌트 내에서 동적인 값을 저장하고 업데이트할 수 있게 해주는 React의 훅(Hook) 입니다.
- Tailwind CSS: Tailwind CSS는 클래스 이름만으로 다양한 스타일을 쉽게 적용할 수 있게 도와주는 도구예요. 이번 글에서는 상태에 따라 다른 CSS 애니메이션과 스타일을 적용합니다.
구현 예제 코드
아래는 사용자가 텍스트를 입력하고 엔터 키를 누르면, 입력란이 화면 위쪽으로 이동하면서 더 이상 수정할 수 없게 되는 예제 코드입니다.
import { useState } from "react";
export default function SearchBar() {
// 상태를 관리하는 useState 훅을 사용합니다.
const [isSubmitted, setIsSubmitted] = useState(false);
// 엔터 키를 감지하는 함수입니다.
const handleKeyPress = (event) => {
if (event.key === "Enter") {
setIsSubmitted(true); // 엔터 키가 눌리면 상태를 true로 변경합니다.
}
};
return (
<div className="w-screen h-screen flex items-center justify-center">
<div
className={`max-w-[320px] w-full text-center absolute transform ${
isSubmitted ? "top-32" : "top-1/2 translate-y-[-50%]"
} transition-all duration-1000 ease-in-out`}
>
<input
type="text"
className={`w-full text-3xl pb-2 text-gray-900 border-b-2 border-gray-900 text-center focus:outline-none ${
isSubmitted ? "bg-transparent text-gray-900 cursor-default" : ""
}`}
placeholder="찾을 단어를 입력해주세요"
onKeyPress={handleKeyPress}
disabled={isSubmitted} // 상태가 true일 때 입력란을 비활성화합니다.
/>
</div>
</div>
);
}
코드 설명
- 상태 관리 (
useState
):useState
훅을 사용해isSubmitted
상태를 관리합니다. 처음에는false
로 설정되고, 엔터 키를 누르면true
로 변경됩니다. - 엔터 키 감지 (
handleKeyPress
): 사용자가 입력란에 글을 입력하고 엔터 키를 누르면isSubmitted
상태가true
로 변경됩니다. - 조건부 클래스 적용: 상태에 따라 CSS 클래스를 다르게 적용합니다. 입력란이 위로 이동하는 애니메이션과 함께 input 입력란을 비활성화합니다. 예제 코드에서는 삼항 연산자를 이용하여 표현했어요.
- 애니메이션과 스타일 적용: Tailwind CSS의
transition-all
과duration-1000
클래스를 사용해 애니메이션을 부드럽게 만들고, 입력란이 비활성화될 때 배경색이 바뀌지 않도록 bg-transparent 를 추가로 설정했습니다.
마무리
예제를 통해 React의 상태 관리와 Tailwind CSS를 사용한 애니메이션 적용 방법을 간단하게 구현해보았습니다. 특별한 기술이 없더라도 이렇듯 웹 페이지에 다양한 인터랙티브 요소를 쉽게 추가할 수 있습니다. 직접 코드를 작성해보면서 연습해보세요 :)
반응형
'나는 이렇게 학습한다 > Frontend' 카테고리의 다른 글
TypeScript 타입 종류 한 번에 정리 (0) | 2024.08.06 |
---|---|
React 의 useEffect 를 쉽게 이해해보자! (0) | 2024.08.06 |
React Query의 useMutation 구현 예시와 콜백 활용법 (2) | 2024.08.04 |
React Query의 useQuery를 활용한 데이터 조회 및 상태 관리 (0) | 2024.08.03 |
JavaScript 구조분해 할당으로 함수 매개변수 다루기 (0) | 2024.08.02 |