Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 중첩배열평탄화
- indexOf()
- 객체의 밸류값만 찾기
- 문자열 중복
- 프론트엔드 스쿨
- 중복 문자열
- 문자열순서바꾸기
- js 문자열을 문자배열로
- 스프링 데이타 JPA
- 배엘에서 스왑
- 중복문자제거
- sql 문자열 패턴 검색
- 5.3.8 Modifying Queries
- 단어 제거
- 중첩배열
- 제로베이스
- 아래로펼치기
- lastIndexOf()
- 코딩 어?
- 중복단어제거
- 중복된 단어
- ubuntu타임존
- ...점점점문법
- 시퀄 문법
- 깃 토큰 만료
- 레디스 확인
- 재귀스왑
- 객체의키값만 찾기
- 우분투 시간 변경
- @Moditying @Query
Archives
- Today
- Total
코딩기록
트러블슈팅 ) transition 적용 본문
728x90
✅ 오류상황
search 아이콘 클릭시 부드럽게 close아이콘 + input 으로 변경이 안됨.
즉, transition 적용 안됨.
{/* 🔽 input 토글 영역 */}
{showInput && (
<input
ref={inputRef}
type="text"
placeholder="검색어를 입력하세요"
className={clsx(
"bg-peach-pink hover:bg-[#ffe3dc] outline-none",
"h-10 border-b rounded-md border-gray-300 px-4 text-base",
"transition-all duration-300 ease-in-out", // 기본 트랜지션
showInput ? "opacity-100 w-[240px]" : "opacity-0 w-0"
)}
autoFocus={showInput}
/>
)}
✅ 문제 원인: w-0 → w-[240px] 애니메이션은 display 상태와 관련 있음
{showInput && <input />}처럼 조건부 렌더링으로 input 자체를 DOM에 아예 추가/제거하면,
transition이 작동하기 전에 width가 없어져 버리기 때문에 애니메이션이 실행되지 않음.
✅ 해결 방법: input을 항상 렌더링하고, className으로만 숨기기
<input
ref={inputRef}
type="text"
placeholder="검색어를 입력하세요"
className={clsx(
"bg-peach-pink hover:bg-[#ffe3dc]",
"h-10 border-b rounded-md border-gray-300 px-4 text-base",
"transition-all duration-300 ease-in-out",
showInput ? "opacity-100 w-[240px]" : "opacity-0 w-0 pointer-events-none"
)}
autoFocus={showInput}
/>
🔧 추가 포인트
- pointer-events-none: input이 w-0일 때 클릭 방지
반응형
'프론트 > 리액트' 카테고리의 다른 글
반복되는 JSX 문법 .map으로 간략하게 (3) | 2025.06.10 |
---|---|
css) input 포커스 시 움직임 수정 (0) | 2025.06.09 |
리액트) 훅 useRef, useState, useEffect, useLayoutEffect, useCallback, useMemo 란? (1) | 2025.06.04 |
React, TS, Next.js 프로젝트) 트러블 슈팅 - button > Image 컴포넌트 토글 (0) | 2025.06.04 |
TS) interface와 type 의 차이 (0) | 2025.02.20 |
Comments