Переход применяется только во время воспроизведения перехода.После завершения перехода все классы перехода удаляются.Это означает, что ваш элемент должен иметь CSS, который вы хотите иметь после завершения перехода.Затем вы можете использовать классы перехода, чтобы установить начальное состояние и определить переход, чтобы добраться до этой точки и из этой точки в начальное состояние.
Самый простой способ решить эту проблему - сделать ExtendTransition.vue
единственный компонент, который беспокоится о переходе и использует обертку, которая оборачивает то, что вы хотите расширить.
<template>
<transition appear name="extend" mode="out-in">
<div class="extend-transition-wrapper" v-show="extended">
<slot></slot>
</div>
</transition>
</template>
<script>
export default {
props: {
extended: {
type: Boolean,
default: false
}
}
};
</script>
Единственное, что вам тогда нужно сделать, это установить состояние по умолчанию вашей обертки:
.extend-transition-wrapper {
height: 100vh;
will-change: height;
position: relative;
}
В вашем ABoutMeComponent.vue
вы затем используете реквизит для отображения и скрытия содержимого:
<ExtendTransition :extended="extended">
<div class="main-container">
<div class="icon-container">
<a v-show="extended" href="#" @click="extended = !extended">
<font-awesome-icon icon="times"/>
</a>
</div>
</div>
</ExtendTransition>
И, наконец, вы устанавливаете .main-container
, чтобы всегда иметь высоту 100%
,Поскольку для обертки установлено значение position: relative
, это заставит основной контейнер стать высотой этого элемента.