안녕하세요 ! 테일윈드 + react로 간단한 투두프로젝트 진행 중인데 반응형을 구현하던 도중 궁금한 점이 생겨서 질문드립니다. 최대 뷰포트 480 이하부터만 특정 컴포넌트(시계, 제목)는 안보이게 하고 기존의 투두리스트 입력할 input, 투두리스트 ul 목록들, 날짜만 보이도록 구현하고 싶은 상황입니다. 480 이상일 때는 위의 말한 컴포넌트들이 모두 보이는 상황입니다! 테일윈드 반응형을 하게 되면 특정 뷰포트일 때만 아예 안보이도록도 구현할 수 있나요? 가능하다면 특정 컴포넌트는 안보여야 하다보니 기존에 구현에 놓은 ui가 안깨지고도 가능한건지, 아니면 직접 재설정 해줘야하는건지도 궁금합니다! 테일윈드 반응형에 익숙치 않아서 어렵네요 ㅠㅠ 위와 같은 고민으로 다른 방법을 찾다보니 useMediaQuery 가 있어서 설치해보고 사용중인데 테일윈드의 단점인 클래스명 길어지는 것, 일일히 태그마다 지정해서 사용해줘야한다는 것을 해결해 줄 수 있을 것 같았는데 특정 컴포넌트가 아예 안보이게 하다보니 조건부렌더링으로 해서 코드가 길어지고, 480 이하 일때 안보이기는 하나 ui가 모두 다 깨져서 결국엔 다시 테일윈드로 레이아웃을 맞춰주게 되더라구요.. 코드로 예를 들자면 import { useMediaQuery } from 'react-responsive'; function TodoHead() { const isSmallScreen = useMediaQuery({ query: '(max-width: 480px)', }); return ( !isSmallScreen && ( <div> <h1 className="mt-[100px] text-center text-6xl font-bold text-white"> Todo List </h1> </div> ) ); } export default TodoHead; 이와 같이 짜둔 상황인데 480 이하일 때는 의도대로 제목이 안보이기는 하나, 해당 컴포넌트가 사라지면서 모든 ui가 깨지니까 결국엔 다시 레이아웃을 조정해야하는 상황인거죠 ㅠㅠ 테일윈드 단점을 해결하고자 쓴건데 좋은 방법이 아닌 것 같기도하고.. 사실 초보라서 사용하던 테일윈드를 활용해서 해결 가능한건지, useMediaQuery 이게 좋은 방법인지도 아닌지도, 아님 굳이 사용할 필요가 없는건지.. 잘 판단이 안서는 상황이네요..ㅎㅎ 도와주세요 선배님들의 조언이 필요합니다 !!
답변 1
인기 답변
답은 공식문서에 있습니다. https://tailwindcss.com/docs/responsive-design 참고하시기 바랍니다. 또한 간단한 구현의 경우 Chatgpt로 효율적으로 학습하실 수 있습니다. v4 되도록이면 구매하셔서 활용하시는 것을 추천 드립니다. 아래는 ChatGpt로 해당 질문 글을 올렸을 때의 답변입니다. Tailwind CSS는 반응형 디자인을 지원하기 때문에, useMediaQuery를 사용하지 않고도 Tailwind의 유틸리티 클래스를 이용하여 조건부 렌더링을 구현할 수 있습니다. 480px 미만의 뷰포트에서 특정 컴포넌트(시계, 제목 등)를 숨기고 나머지 요소(입력 필드, 투두 리스트, 날짜 등)는 표시하는 것을 원한다면, Tailwind의 hidden 클래스와 반응형 접두사를 사용할 수 있습니다. 아래 코드는 Tailwind CSS를 사용하여 이러한 요구 사항을 구현하는 방법을 보여줍니다 이 예시에서는 sm:block 클래스를 사용하여 480px 이상의 뷰포트에서 컴포넌트를 표시하고, hidden 클래스로 480px 미만에서는 숨깁니다. Tailwind CSS의 반응형 접두사(sm:, md:, lg:, xl:, 2xl: 등)를 사용하여 다양한 뷰포트 크기에 따른 스타일을 적용할 수 있습니다.
1function TodoHead() {
2 return (
3 <div>
4 {/* 이 부분은 480px 이상의 뷰포트에서만 보입니다. */}
5 <h1 className="hidden sm:block mt-[100px] text-center text-6xl font-bold text-white">
6 Todo List
7 </h1>
8 {/* 여기에 다른 컴포넌트를 추가할 수 있으며, sm:block을 사용하여 480px 이상에서만 표시됩니다. */}
9 </div>
10 );
11}
12
13export default TodoHead;
익명
작성자
11월 20일
gpt도 이용했는데 제가 질문 능력이 부족했는지 원하는 답변을 얻지 못했었거든요.. 알려주신 방법대로 테일윈드로 다시 적용해서 코드 수정을 해봐야겠습니다. 답변 감사합니다 !
백승훈
프론트 엔드 개발자 (FE) • 11월 21일
질문하실 때 베이스 기술이나 항목을 알고 있으면 그쪽으로 작성해보라고 적어보시면 도움이 됩니다 👍 차크라 UI나 테일윈드 둘 다 사용해봤는데 편리하고 좋은 기술이라 생각해요 파이팅입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!