Как сделать плавное сворачивание и разворачивание списка?

Для создания плавного сворачивания и разворачивания списка в Vue.js вы можете использовать компонент Transition. Компонент Transition предоставляет вам возможность добавления анимации при добавлении или удалении элементов из DOM.

Для начала, импортируйте компонент Transition из библиотеки Vue:

<template>
  <transition name="fade">
    <ul v-if="showList">
      <li>Элемент 1</li>
      <li>Элемент 2</li>
      <li>Элемент 3</li>
    </ul>
  </transition>
</template>

<script>
export default {
  data() {
    return {
      showList: true,
    };
  },
};
</script>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}

.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

В данном примере, мы использовали компонент Transition вокруг списка элементов ul. Мы также добавили атрибут name="fade", который задает имя анимации. В данном случае, мы будем использовать классы fade-enter-active, fade-leave-active, fade-enter, fade-leave-to для определения анимации.

Компонент Transition автоматически добавляет классы к элементу при его создании и удалении. В момент создания элемента, будет добавлен класс fade-enter, а класс fade-enter-active активирует анимацию на переход. Аналогично, при удалении элемента, будет добавлен класс fade-leave-to, а класс fade-leave-active активирует анимацию при удалении элемента.

В приведенном примере, по умолчанию значение showList равно true, что означает, что список будет отображаться. При изменении значения showList на false, список будет плавно скрываться из DOM с использованием анимации.

Не забудьте добавить стили для анимации в теге <style>. В примере использован простой пример анимации с использованием свойства opacity, но вы можете настроить анимацию по своему усмотрению.

Таким образом, при изменении значения showList на false, список будет плавно скрываться, и при изменении значения на true, список будет плавно отображаться с использованием анимации.