A propriedade transition da página
O Nuxt usa o componente <transition> para permitir você criar transições ou animações incríveis entre suas páginas.
-
Tipo:
StringouObjectouFunction
Para definir uma transição personalizada para uma rota específica, simplesmente adicione a chave transition ao componente.
export default {
// Pode ser uma Sequência de Caracteres
transition: ''
// Ou um Objeto
transition: {}
// ou uma Função
transition (to, from) {}
}
Sequência de Caracteres
Se a chave transition for definida como uma sequência de caracteres, ela será usada como transition.name.
export default {
transition: 'test'
}
O Nuxt usará essas definições para definir o componente conforme a seguinte:
<transition name="test"></transition>
Objeto
Se a chave transition for definida como um objeto:
export default {
transition: {
name: 'test',
mode: 'out-in'
}
}
O Nuxt usará essas definições para definir o componente conforme a seguinte:
<transition name="test" mode="out-in"></transition>
O objeto transition pode ter ass seguintes propriedades:
| key | Type | Default | definition |
|---|---|---|---|
name |
String |
"page" |
O nome da transição aplicado sobre todas transições de rotas. |
mode |
String |
"out-in" |
O modo de transição aplicado sobre todas rotas, consulte a documentação do Vue.js |
css |
Boolean |
true |
Se aplicar a classes de transição de CSS. Padroniza para true. Se definir para false, apenas acionará gatilhos de JavaScript registado através dos eventos de componente. |
duration |
Integer |
n/a | A duração (em milissegundos) aplicado sobre a transição, consulte a documentação do Vue.js . |
type |
String |
n/a | Especifica o tipo dos eventos de transição, para esperar determinar o tempo final da transição. Os valores disponíveis são 'transition' e 'animation'. Por padrão, ele detetará automaticamente o tipo que tiver duração mais longa. |
enterClass |
String |
n/a | O estado de inicial da classe de transição (classe ou transição de entrada). Consulte a documentação do Vue.js . |
enterToClass |
String |
n/a | O estado final para a transição (estado final da classe ou transição de entrada). Consulte a documentação do Vue.js . |
enterActiveClass |
String |
n/a | A classe aplicada em toda duração da transição (depois de adicionar a classe enterClass e antes de adicionar a classe enterToClass). Consulte a documentação do Vue.js . |
leaveClass |
String |
n/a | O estado inicial da transição (classe ou transição de saída). Consulte a documentação do Vue.js . |
leaveToClass |
String |
n/a | O estado final da transição (classe ou transição de saída). Consulte a documentação do Vue.js . |
leaveActiveClass |
String |
n/a | A classe aplicada em toda duração da transição (depois de adicionar a classe leaveClass e antes de adicionar a classe leaveToClass). Consulte a documentação do Vue.js . |
Você pode também definir métodos dentro da propriedade transition da página, esses são para os gatilhos de 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)
}
}
}
Nota que: é também uma boa ideia adicionar css: false explicitamente para transições de somente JavaScript assim o Vue pode pular a deteção de CSS. Isto também previne as regras de CSS de acidentalmente interferirem com a transição.
Modo de Transição
A modo de transição padrão para páginas diferem do mesmo modo padrão no Vue.js. O modo transition é por padrão definido para out-in. Se você quiser executar transições de saída e entrada simultaneamente, você tem de definir o mode para uma sequência de caracteres vazia mode: ''.
export default {
transition: {
name: 'test',
mode: ''
}
}
Função
Se a chave transition for definida como uma função:
export default {
transition(to, from) {
if (!from) {
return 'slide-left'
}
return +to.query.page < +from.query.page ? 'slide-right' : 'slide-left'
}
}
As transições aplicadas na navegação são:
-
/para/posts=>slide-left, -
/postspara/posts?page=3=>slide-left, -
/posts?page=3para/posts?page=2=>slide-right.
Clément Ollivier
Daniel Roe
Alex Hirzel
Ajeet Chaulagain
René Eschke
Sébastien Chopin
Nico Devs
Muhammad
Nazaré da Piedade
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Xanzhu
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian LEFEBVRE
Lucas
Julien SEIXAS
Hugo
Sylvain Marroufin
Spencer Cooley
Piotr Zatorski
Vladimir Semenov
Harry Allen
kazuya kawaguchi
Unai Mengual
Hyunseung Lee
Alexandre Chopin
pooya parsa
Nick Medrano
Mosaab Emam
Iljs Путлер Капут
Heitor Ramon Ribeiro
Nero
Yoon Han
Ikko Ashimine
FamCodings
Ayouli
F. Hinkelmann
felipesuri
Christophe Carvalho Vilas-Boas
Leoš Literák
Trizotti
Marcello Bachechi
Rodolphe
Thomas Underwood
Shek Evgeniy
Lukasz Formela
Hugo Torzuoli