Если вы хотите анимировать max-height, вам нужно ввести значение max-height для элемента, который вы хотите анимировать, а также исправить второй класс, указав 's' (или секунды) в определении max-height :
p{
max-height: 20px;
}
.smooth-enter-active, .smooth-leave-active {
transition: max-height .5s;
}
.smooth-enter, .smooth-leave-to {
max-height: 0;
}
если вы хотите что-то вроде крушения bs4, то пример на сайте vue подойдет:
.smooth-enter-active, .smooth-leave-active {
transition: opacity .5s;
}
.smooth-enter, .smooth-leave-to {
opacity: 0
}
Редактировать:
То, что вы пытаетесь сделать, достижимо, если сначала определить высоту содержимого, а затем установить его в классах .*-enter-to
и .*-leave
. Один из способов сделать это продемонстрирован в скрипте ниже:
https://jsfiddle.net/rezaxdi/sxgyj1f4/3/
Вы также можете полностью забыть о v-if или v-show и просто скрыть элемент, используя значение высоты, которое, как мне кажется, намного плавнее:
https://jsfiddle.net/rezaxdi/tgfabw65/9/