Anime.js module for Nuxt.js
- Helps you integrate
Anime.js
javascript animation library - Allows you to easily animate elements via custom
v-anime
directive 🔥 - Provides a solution for global use via
this.$anime
🤩 -
Zero-config
setup ready to go 🚀
- Install
nuxt-animejs
dependency to your project
$ npm install --save-dev nuxt-animejs # or yarn add -D nuxt-animejs
- Enable
nuxt-animejs
in thebuildModules
section
// nuxt.config.js
export default {
buildModules: ['nuxt-animejs']
}
That's it! Start developing your app!
Here are some code examples
<!-- index.vue -->
<template>
<div>
<h1 class="title">Hello World</h1>
</div>
</template>
<script>
export default {
mounted() {
this.setAnimation()
},
methods: {
setAnimation() {
this.$anime({
targets: '.title',
translateX: 250,
rotate: '1turn',
backgroundColor: '#FFF',
duration: 800
})
}
}
}
</script>
<!-- index.vue -->
<template>
<div>
<h1 v-anime="rotate">NUXT ANIMEJS</h1>
<p v-anime.set="translate">NUXT ANIMEJS</p>
</div>
</template>
<script>
export default {
data() {
return {
rotate: {
rotate: 360,
backgroundColor: ['#2f495e', '#00c58e'],
duration: 3000,
loop: true
},
translate: {
translateY: 250,
duration: 3300
}
}
}
}
</script>
<!-- index.vue -->
<template>
<div>
<button @click="animeEl">Click me</button>
<p class="p1">Nuxt Animejs Module</p>
</div>
</template>
<script>
export default {
methods: {
animeEl() {
this.$anime({
targets: '.p1',
translateX: 250,
rotate: '1turn',
backgroundColor: '#FFF',
duration: 800
})
}
}
}
</script>
// nuxt.config.js
{
buildModules: ['nuxt-animejs'],
// Add global page transition
pageTransition: {
name: 'page',
mode: 'out-in',
css: false,
beforeEnter(el) {
this.$anime.set(el, {
opacity: 0
})
},
enter(el, done) {
this.$anime({
targets: el,
opacity: [0, 1],
duration: 500,
easing: 'easeInOutSine',
complete: done
})
},
leave(el, done) {
this.$anime({
targets: el,
opacity: [1, 0],
duration: 500,
easing: 'easeInOutSine',
complete: done
})
}
}
}
Module allows you to easily animate elements via custom v-anime
directive and its modifiers.
- Directive:
v-anime
- Default:
true
<template>
<h1
v-anime="{
rotate: 360,
backgroundColor: ['#2f495e', '#00c58e'],
duration: 3000,
loop: true,
}"
>
NUXT ANIMEJS
</h1>
</template>
- Modifier:
v-anime.set
- Default:
true
<template>
<h2
v-anime.set="{
color: '#2f495e',
backgroundColor: '#00c58e',
}"
>
NUXT ANIMEJS
</h2>
</template>
Here are all the default
options that can be used for customization:
// nuxt.config.js
export default {
animejs: true
}
- Default:
true
Anime.js is enabled
by default so there is no need for additional configuration.
// nuxt.config.js
export default {
buildModules: ['nuxt-animejs'],
/**
* If you want to disable Anime.js, set it to 'false'
* This is useful for quick tests
*/
animejs: false
}
Available globally
// Access Anime by using
this.$anime
// or
const anime = this.$anime
anime({
targets: '.p1',
translateX: 250,
duration: 800
})
Anime.js
Copyright (c) Julian Garnier
Nuxt Animejs Module
Copyright (c) Ivo Dolenc