Vuetify — Transition, Alert, and Scrolling

Photo by Mitchell Orr on Unsplash

Vuetify is a popular UI framework for Vue apps.

In this article, we’ll look at how to work with the Vuetify framework.

Custom Transition

We can create our own transition by using the createSimpleTransition function to create our transition.

First, we define the component in vuetify.js

import Vue from 'vue';
import Vuetify from 'vuetify/lib';
import { createSimpleTransition } from 'vuetify/lib/components/transitions/createTransition'
const fadeTransition = createSimpleTransition('v-fade-transition')
Vue.component('v-fade-transition', fadeTransition)
Vue.use(Vuetify);
export default new Vuetify({
});

Then we write:

<template>
<v-container>
<v-row class="text-center">
<v-col col="12">
<v-btn class="ma-2" color="primary" @click="expand = !expand">Expand Transition</v-btn>
<v-fade-transition>
<v-card v-show="expand" height="100" width="100" class="mx-auto"></v-card>
</v-fade-transition>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({
expand: false,
}),
};
</script>
<style scoped>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
</style>

We defined the v-fade-transition component with:

const fadeTransition = createSimpleTransition('v-fade-transition')
Vue.component('v-fade-transition', fadeTransition)

Then we defined the classes for it with:

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

The prefix fade should be the same one as the word between v- and -transition so that the transition styles will be applied.

Programmatic Scrolling

We can scroll our page programmatically with Vuetify.

For example, we can write:

<template>
<v-container>
<v-row class="text-center">
<v-col col="12">
<v-btn ref="button" block color="primary" @click="$vuetify.goTo('#num-100')">scroll</v-btn>
<p v-for='n in 100' :key='n' :id="`num-${n}`">{{n}}</p>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({}),
};
</script>

We have the p elements with some IDs.

And we call $vuetify.goTo to scroll to the element with the given selector.

goTo also takes a second argument with some options.

The option object can have the duration , offset , and easing properties.

We can set the options by writing:

<template>
<v-container>
<v-row class="text-center">
<v-col col="12">
<v-btn ref="button" block color="primary" @click="$vuetify.goTo('#num-100', options)">scroll</v-btn>
<p v-for="n in 100" :key="n" :id="`num-${n}`">{{n}}</p>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({
options: {
duration: 1300,
offset: 0,
easing: "easeInOutCubic",
},
}),
};
</script>

And we set the option for scrolling.

Alerts

We can add an alert with the v-alert component.

It comes with 4 default styles, which are success , info , warning , and error .

For example, we can write:

<template>
<v-container>
<v-row class="text-center">
<v-col col="12">
<v-alert type="success">success alert.</v-alert>
<v-alert type="info">info alert.</v-alert> <v-alert type="warning">warning alert.</v-alert> <v-alert type="error">error alert.</v-alert>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({}),
};
</script>

We have the v-alert component with the alerts.

Photo by Mason Dahl on Unsplash

Conclusion

We can scroll programmatically and add alerts with Vuetify.

Also, we can create our own transition components with one function.

Web developer. Subscribe to my email list now at https://thewebdev.info/subscribe/. Email me at hohanga@gmail.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store