#javascript #vue.js #animate.css
#javascript #vue.js #animate.css
Вопрос:
Я пытаюсь использовать animate.css в моем проекте vue. Я импортировал библиотеку в main.js
файл
import { createApp } from 'vue'
import App from './App.vue'
import './registerServiceWorker'
import router from './router'
//bootstrap
import 'bootstrap/dist/css/bootstrap.min.css';
//font-awesome
import '@fortawesome/fontawesome-free/css/all.min.css';
//animate.css
import 'animate.css';
createApp(App)
.use(router)
.mount('#app');
И, на мой взгляд, я присваиваю классы из библиотеки элементам, которые я хочу анимировать, но безуспешно, ничего не происходит.
<template>
<div class="container-fluid p-0" id="content-wrapper">
<!-- copertina pagina -->
<div class="row m-0" id="cover-row">
<div class="col-sm-12 col-md-12 col-lg-12 vh-100 p-0">
<img class="img-fluid w-100 h-100" src="@/assets/cover.jpeg" id="cover-image">
<span class="text-center position-absolute" id="cover-scroll">
<a href="#travels" class="animate__slideOutDown animate__slower animate__delay-3s animate__repeat-3">
<i class="fas fa-chevron-down"></i>
</a>
</span>
<div class="overlay position-absolute"></div>
</div>
</div>
<!-- descrizione progetto -->
<div class="row m-0 mb-3 pt-5 pb-5 px-md-5" id="travels">
<div class="col-sm-12 col-md-6 col-lg-6 text-center" id="">
<img class="img-fluid w-75" src="@/assets/peoples.jpg">
</div>
<div class="col-sm-12 col-md-6 col-lg-6" id="">
<h1 class="fw-bold mt-5 animate__fadeInDown">Escursioni in programma</h1>
<h4 class="mb-5 animate__fadeInDown">
...
</h4>
<div class="d-grid gap-2">
<button class="btn btn-primary btn-lg btn-block" @click.prevent="showIframe()">OPEN</button>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Home',
methods: {
showIframe() {
this.$router.push({path: '/events'});
}
}
}
</script>
<style lang="scss" scoped>
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700amp;display=swap');
#content-wrapper {
font-family: 'Montserrat', sans-serif;
background: white;
#cover-row {
#cover-image {
object-fit: cover;
}
.overlay {
height: 100vh;
background: rgba(0,0,0,0.5);
top: 0;
left: 0;
right: 0;
}
#cover-scroll {
a {
color: white !important;
}
z-index: 1;
top: 85%;
left: 0;
right: 0;
}
}
}
</style>
Стрелка на обложке не будет анимирована. Для текста возникает та же проблема. Есть предложения по исправлению кода?Может быть, я допустил ошибку?
Ответ №1:
Похоже, вам не хватает animate__animated
класса вместе с нужной анимацией. Это форма документации;
После установки Animate.css добавьте класс animate__animated к элементу вместе с любым из имен анимации (не забудьте префикс animate__!):
<h1 class="animate__animated animate__bounce">An animated element</h1>
Комментарии:
1. Мне нужно проверить, я думал, что это была ошибка, которую я допустил при импорте библиотеки! Спасибо
Ответ №2:
Я полагаю, вы пропустили урок. С их веб-сайта для версии 4 Animate.css говорит:
После установки Animate.css добавьте класс animate__animated к элементу вместе с любым из имен анимации (не забудьте префикс animate__!)
Ответ №3:
Использование класса привязки и метода click
const FontAwesomeAnimate = {
data() {
return {
reloadico: false,
}
},
methods: {
reload() {
var self = this
//stop after 5 sec
setTimeout(function () { self.reloadico = false }, 5000)
this.reloadico = true
},
}
}
Vue.createApp(FontAwesomeAnimate).mount('#animate-fa-vue')
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://unpkg.com/vue@3.2.36/dist/vue.global.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.0/js/bootstrap.min.js"></script>
<div class="row" id="animate-fa-vue">
<div class="col-xl-6 col-lg-6">
<div class="card shadow mb-4">
<div class="card-header d-flex flex-row">
<div>
<div class="align-self-center">
<h6 class="m-0 font-weight-bold">Click reload icon</h6>
</div>
</div>
<div class="ml-auto">
<i class="fas fa-refresh m-2 font-weight-bold" :class="{ 'fa-spin': reloadico }" v-on:click="reload()"></i>
</div>
</div>
</div>
</div>
</div>