Vuetify предоставляет богатый набор инструментов для реализации
анимаций и переходов, среди которых ключевую роль
играют переходы скольжения
(v-slide-x-transition, v-slide-y-transition).
Эти компоненты позволяют плавно изменять положение элементов в DOM при
их появлении или скрытии, создавая ощущение движения и улучшая
восприятие интерфейса пользователем.
Переходы скольжения в Vuetify реализованы на базе компонента
<transition> из Vue.js, но имеют
встроенные стили и возможности для вертикальной и горизонтальной
анимации.
Vuetify предлагает следующие базовые компоненты для скольжения:
v-slide-x-transition – скольжение
по горизонтали.
mode и порядок рендеринга элементов.v-slide-y-transition – скольжение
по вертикали.
v-slide-x-reverse-transition и
v-slide-y-reverse-transition – зеркальные варианты
стандартных переходов, где движение происходит в противоположном
направлении.
Все эти компоненты оборачивают контент, который должен участвовать в анимации, и автоматически применяют CSS-переходы при добавлении или удалении элементов из DOM.
Простейший пример горизонтального скольжения при отображении кнопки:
<template>
<v-btn @click="show = !show">Toggle</v-btn>
<v-slide-x-transition>
<v-card v-if="show" class="pa-4" color="blue lighten-2">
Контент для скольжения
</v-card>
</v-slide-x-transition>
</template>
<script>
export default {
data() {
return {
show: false,
};
},
};
</script>
Объяснение:
v-if контролирует присутствие элемента в DOM.v-slide-x-transition автоматически применяет
CSS-анимацию скольжения при его появлении или исчезновении.show переключает видимость компонента.Vuetify позволяет изменять продолжительность и кривую анимации через CSS-переменные и классы.
Пример кастомной скорости:
<v-slide-y-transition
enter-active-class="custom-enter"
leave-active-class="custom-leave"
>
<v-alert v-if="visible" type="success">Успешное действие</v-alert>
</v-slide-y-transition>
<style>
.custom-enter {
transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
.custom-leave {
transition: transform 0.5s ease-in;
}
</style>
Ключевые моменты:
enter-active-class и leave-active-class
позволяют полностью контролировать стиль анимации.transform отвечает за сдвиг элемента при
скольжении.cubic-bezier или
ease-in-out делает анимацию более естественной.Для динамических списков, где элементы добавляются и удаляются,
скольжения работают совместно с v-for и
key:
<v-slide-y-transition-group>
<v-list-item
v-for="item in items"
:key="item.id"
>
{{ item.name }}
</v-list-item>
</v-slide-y-transition-group>
Особенности:
v-slide-y-transition-group обрабатывает несколько
элементов одновременно.key обязателен для корректного расчёта анимации
появления и исчезновения.Скольжения можно комбинировать с fade или scale для более сложных эффектов:
<v-scale-transition>
<v-slide-y-transition>
<v-card v-if="visible" class="pa-3" color="pink lighten-3">
Комбинированный эффект
</v-card>
</v-slide-y-transition>
</v-scale-transition>
transform: translate3d.v-slide-transition компоненты.v-show вместо
v-if, если нужно скрывать элементы без удаления их
из DOM, чтобы скольжение было мгновенным.Скользящие переходы в Vuetify — мощный инструмент для динамичного и отзывчивого интерфейса, позволяющий управлять визуальной структурой компонентов с минимальными усилиями, создавая ощущение естественного движения элементов.