page transition 属性
Nuxt 使用 <transition> 组件,可以在页面间切换时创建过渡/动画效果。
-
类型:
String或Object或Function
要为特定路由设置自定义过渡,请在页面组件中添加 transition 键。
export default {
// 可以指定字符串
transition: ''
// 或对象
transition: {}
// 或函数
transition (to, from) {}
}
字符串
如果 transition 键设置为字符串,则用作 transition.name。
export default {
transition: 'test'
}
Nuxt 会使用这些设置将组件配置如下:
<transition name="test"></transition>
对象
如果 transition 键设置为对象:
export default {
transition: {
name: 'test',
mode: 'out-in'
}
}
Nuxt 会使用这些设置将组件配置如下:
<transition name="test" mode="out-in"></transition>
transition 对象可以拥有以下属性:
| 键 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name |
String |
"page" |
应用于所有路由过渡的过渡名称。 |
mode |
String |
"out-in" |
应用于所有路由的过渡模式,详见 Vue.js 文档 。 |
css |
Boolean |
true |
是否应用 CSS 过渡类,默认为 true,设为 false 时只有通过组件事件注册的 JavaScript 钩子会触发。 |
duration |
Integer |
n/a | 过渡应用的时间(毫秒),详见 Vue.js 文档 。 |
type |
String |
n/a | 指定等待的过渡事件类型以确定过渡结束时机,可选值为 "transition" 或 "animation",默认自动检测持续时间较长的类型。 |
enterClass |
String |
n/a | 过渡类的起始状态,详见 Vue.js 文档 。 |
enterToClass |
String |
n/a | 过渡的结束状态,详见 Vue.js 文档 。 |
enterActiveClass |
String |
n/a | 过渡期间应用的类,详见 Vue.js 文档 。 |
leaveClass |
String |
n/a | 过渡类的起始状态,详见 Vue.js 文档 。 |
leaveToClass |
String |
n/a | 过渡的结束状态,详见 Vue.js 文档 。 |
leaveActiveClass |
String |
n/a | 过渡期间应用的类,详见 Vue.js 文档 。 |
还可以在 page transition 属性中定义方法,用于 JavaScript 钩子 :
-
beforeEnter(el) -
enter(el, done) -
afterEnter(el) -
enterCancelled(el) -
beforeLeave(el) -
leave(el, done) -
afterLeave(el) -
leaveCancelled(el)
export default {
transition: {
afterLeave(el) {
console.log('afterLeave', el)
}
}
}
注意:对于纯 JavaScript 过渡,建议显式添加 css: false,让 Vue 跳过 CSS 检测,这样可以防止 CSS 规则意外干扰过渡。
过渡模式
页面的默认过渡模式与 Vue.js 的默认模式不同。 transition 模式默认设置为 out-in。如果想同时执行进入和离开过渡,需要将模式设为空字符串 mode: ''。
export default {
transition: {
name: 'test',
mode: ''
}
}
函数
如果 transition 键设置为函数:
export default {
transition(to, from) {
if (!from) {
return 'slide-left'
}
return +to.query.page < +from.query.page ? 'slide-right' : 'slide-left'
}
}
过渡会在每次页面导航时应用:
-
/to/posts=>slide-left, -
/poststo/posts?page=3=>slide-left, -
/posts?page=3to/posts?page=2=>slide-right.
Edit this page on GitHub
Updated at Tue, Apr 14, 2026