flex와 truncate (텍스트 줄바꿈)

박요셉·2025년 6월 11일

Simple note

목록 보기
15/18
<>
      <UserCard user={user} />
      <div className='flex flex-1 gap-3 items-center justify-between'>
        <UserAvatar user={user} className='flex-1 h-full' />
        <div className='flex-1 flex flex-col justify-center gap-6'>
          <Button className='w-full bg-purple-600 hover:bg-purple-700'>
            채팅 시작
          </Button>
          <Button className='w-full bg-purple-600 hover:bg-purple-700'>
            듀오 신청
          </Button>
        </div>
      </div>
      <div className='flex flex-1'>
        <p className='truncate w-0 flex-1'>
          {user.one_line} asdasdasdawoidjaoisjdoiajsdoijasiodjoiasdaosidjioasdj
        </p>
      </div>
    </>

위는 내 컴포넌트인데 flex-1로 준 넓이에서 truncate를 주려면 넓이를 제한해야하는데 이 제한하는 방식에 대해 난항을 겪었음.
1. max-w-[somthing px] : px이 기획되어있다면 이렇게할텐데 그렇지 않아 유기적으로 반응하는 방식이 필요해서 기각
2. flex-1 : grow로 넓이를 차지해! 한 후 truncate를 써도 max가 없어서 작동 x

해결 방식

<div className='flex flex-1'>
  <p className='truncate w-0 flex-1'>
    {user.one_line} asdasdasdawoidjaoisjdoiajsdoijasiodjoiasdaosidjioasdj
  </p>
</div>

이게 되는 논리? 프로세스?는 아래와 같음

  1. flex-1을 쓸 때의 동작
    • flex-은 "가능한 모든 공간을 차지한다"라는 의미
    • 기본적으로 flex item의 min-width는 auto
    • 즉, 텍스트가 너무 길면 줄바꿈 없이 계속 늘어나서, overflow가 발생해도 부모를 밀어버림
  2. w-0을 추가시
    • w-0은 기본 width를 0으로 강제
    • flex-1과 함께 쓰면?
      -> "기본 width는 0이야, 남은 공간만큼만 늘려!(다른 요소들이 늘려놓은 공간 만큼만)
    • 형제 요소들이 공간을 차지할 때 이 flex item은 남은 공간만 사용하게 되고, 텍스트가 넘치면 truncate가 ...으로 자르게됨
profile
개발자 지망생

0개의 댓글