Vue.js 심화 3탄 3강: 줄을 서시오! 차례대로 나타나는 마법 (Transition Group)

안녕하세요! 가족과 함께하는 스마트 라이프입니다. 어제는 하트가 통통 튀는 애니메이션 마법을 배웠죠? 그런데 만약 보물 상자에서 보석이 여러 개 쏟아져 나온다면 어떻게 할까요? 하나씩 갑자기 툭툭 나타나면 정신없겠죠? 오늘은 여러 개의 물건이 순서대로 멋지게 등장하고, 자리가 바뀌면 부드럽게 비켜주는 마법의 행진, Transition Group(트랜지션 그룹)을 배워볼게요!

[IMAGE_1]

1. Transition Group: 친구들과 함께하는 춤

트랜지션 그룹은 혼자 추는 춤이 아니라 ‘군무’와 같아요.

  • 차례대로 입장: 새로운 친구(데이터)가 추가되면 뒤에 줄을 서서 부드럽게 나타나요.
  • 매너 있게 비켜주기: 중간에 있는 친구가 사라지면, 뒤에 있던 친구들이 빈자리로 ‘슥~’ 하고 부드럽게 이동해서 자리를 채워준답니다.

이 마법을 쓰면 목록이 바뀌어도 눈이 어지럽지 않고 아주 자연스러워 보여요!

2. 마법의 새로운 이름: v-move

트랜지션 그룹에는 특별한 이름이 하나 더 있어요. 바로 v-move예요. 이건 물건이 새로 생기는 게 아니라, 원래 있던 물건이 ‘옆으로 비켜날 때’ 사용하는 마법 주문이랍니다. 이 주문 덕분에 자리가 바뀔 때 순간 이동하지 않고 미끄러지듯 움직일 수 있어요.

3. 실전 마법: 보석 목록 만들기

보석이 추가되거나 사라질 때 부드럽게 움직이는 코드를 짜볼까요? <TransitionGroup> 태그를 사용해요!

<!-- 1. 여러 명의 친구를 감싸요 (App.vue) -->
<template>
  <button @click="addGem">보석 추가</button>
  
  <TransitionGroup name="list" tag="ul">
    <li v-for="gem in gems" :key="gem.id" @click="removeGem(gem.id)">
      💎 {{ gem.name }}
    </li>
  </TransitionGroup>
</template>

<!-- 2. 움직임의 규칙 (CSS) -->
<style>
.list-enter-active, .list-leave-active, .list-move {
  transition: all 0.5s ease; /* 모든 움직임을 0.5초 동안 부드럽게! */
}
.list-enter-from, .list-leave-to {
  opacity: 0;
  transform: translateX(30px); /* 옆에서 슥~ 들어오게! */
}
/* 사라지는 친구가 자리를 비켜줄 때의 마법 */
.list-leave-active {
  position: absolute;
}
</style>

[IMAGE_2]

4. 스마트 라이프를 위한 가족 코딩 팁

아이들에게 ‘줄서기’와 ‘양보’에 대해 이야기해 보세요. 새로운 친구가 오면 자리를 내어주고, 친구가 먼저 가면 빈자리를 채워주는 착한 마음씨가 코딩에도 들어있다고요. 아이와 함께 만든 ‘에듀패드’에서 ‘오늘의 할 일 목록’이나 ‘단어장’에 이 마법을 적용해 보세요. 할 일을 다 해서 목록에서 지울 때, 밑에 있던 다른 일들이 부드럽게 올라오는 걸 보며 아이는 질서 정연한 즐거움을 느끼게 됩니다.

마치며: 화려한 축제의 주인공

이제 여러분은 수많은 데이터를 자유자재로 움직이게 만드는 축제 기획자 마법사가 되었습니다! 다음 시간에는 **’마법의 돋보기(Teleport)’**라는 주제로, 성 안의 물건을 순식간에 성 밖(원하는 곳 어디든)으로 순간 이동시키는 신기한 비법을 배워볼게요! 내일 아침 9시에 만나요!