#javascript #css #vue.js
#javascript #css #vue.js
Вопрос:
Я только начал изучать vue и попытался выполнить переход на маршрутизатор. Однако приведенный выше код не имеет никаких переходов при переключении между страницами. Есть идеи, почему? Дополнительная строка, поскольку stackoverflow не позволяет мне задать вопрос иначе.
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link><br><br>
</div>
<transition name="fade" mode="out-in">
<router-view></router-view>
</transition>
</div>
</template>
<script>
</script>
<style>
body {
background-color: #00ffcc;
margin: 0;
padding: 0;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
overflow: hidden;
width: 100vw;
}
#nav {
padding: 30px;
}
#nav a {
font-weight: bold;
color: #2c3e50;
}
#nav a.router-link-exact-active {
color: #42b983;
}
.fade-enter, .fade-leave-to {
opacity: 0;
transform: translateX(2em);
}
.fade-enter-active, .fade-leave-active {
transition: all .3 ease;
}
</style>
Ответ №1:
Похоже, проблема связана с вашим CSS-кодом, так и должно быть transition: all 0.3s ease
. Вот рабочий пример
const Home = { template: '<div>Home</div>' }
const Foo = { template: '<div>Foo</div>' }
const router = new VueRouter({
mode: 'hash',
routes: [
{ path: '/', component: Home },
{ path: '/foo', component: Foo }
]
})
new Vue({
router,
el: '#app',
data: {
msg: 'Hello World'
}
})
body {
background-color: #00ffcc;
margin: 0;
padding: 0;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
overflow: hidden;
width: 100vw;
}
#nav {
padding: 30px;
}
#nav a {
font-weight: bold;
color: #2c3e50;
}
#nav a.router-link-exact-active {
color: #42b983;
}
.router-link-active {
color: red;
}
.fade-enter, .fade-leave-to {
opacity: 0;
transform: translateX(2em);
}
.fade-enter-active, .fade-leave-active {
transition: all 0.3s ease;
}
<script src="https://npmcdn.com/vue/dist/vue.js"></script>
<script src="https://npmcdn.com/vue-router/dist/vue-router.js"></script>
<div id="app">
<router-link to="/">/home</router-link>
<router-link to="/foo">/foo</router-link>
<transition name="fade" mode="out-in">
<router-view></router-view>
</transition>
</div>
Вот jsfiddle приведенного выше кода.