|  | 
|  | 1 | +--- | 
|  | 2 | +title: 🔴 Transição de View | 
|  | 3 | +description: Desafio 44 você aprenderá a nova API para animação de transição de view | 
|  | 4 | +author: thomas-laforge | 
|  | 5 | +challengeNumber: 44 | 
|  | 6 | +command: angular-view-transition | 
|  | 7 | +sidebar: | 
|  | 8 | + order: 208 | 
|  | 9 | + badge: New | 
|  | 10 | +--- | 
|  | 11 | + | 
|  | 12 | +## Informação | 
|  | 13 | + | 
|  | 14 | +A View Transition API é uma nova API que fornece um conjunto de funcionalidades, permitindo desenvolvedores controlarem e manipularem as transições e animações entre views dentro de uma aplicação. | 
|  | 15 | +Isso tem um papel importante na melhoria da experiência do usuário (UX), trazendo vida a aplicações com transições atraentes e cativantes afim de guiar usuários por diferentes páginas e seções da aplicação. | 
|  | 16 | + | 
|  | 17 | +O objetivo deste desafio é aprender a manipular todos os tipos de transições propostas pela API. | 
|  | 18 | + | 
|  | 19 | +Para usar a API, Angular tem uma função `withViewTransitions()` que deve ser injetada dentro da configurações do roteador. | 
|  | 20 | + | 
|  | 21 | +Eu recomendaria a leitura da [documentação Chrome](https://developer.chrome.com/docs/web-platform/view-transitions). Você aprenderá tudo o que é necessário para completar o desafio com sucesso. | 
|  | 22 | + | 
|  | 23 | +Aqui, no entanto, um pequeno resumo: | 
|  | 24 | +Primeiramente, cada elemento DOM tem dois estados; um `old` para quando o elemento está deixando a página, e um `new` para quando está entrando na página: | 
|  | 25 | + | 
|  | 26 | +```css | 
|  | 27 | +::view-transition-old(root) { | 
|  | 28 | +/ / animação | 
|  | 29 | +} | 
|  | 30 | + | 
|  | 31 | +::view-transition-new(root) { | 
|  | 32 | +/ / animação | 
|  | 33 | +} | 
|  | 34 | +``` | 
|  | 35 | + | 
|  | 36 | +Para apontar um elemento em específico, você deve adicionar o seletor `view-transition-name` em uma classe CSS no nó DOM, como ilustrado abaixo: | 
|  | 37 | + | 
|  | 38 | +```css | 
|  | 39 | +.specific-element { | 
|  | 40 | + view-transition-name: specific-element; | 
|  | 41 | +} | 
|  | 42 | +``` | 
|  | 43 | + | 
|  | 44 | +Isso permite criar uma animação para aquele elemento apenas. | 
|  | 45 | + | 
|  | 46 | +Por último, se um mesmo elemento está presente em ambas as views, você pode automatizar a transição atribuindo o mesmo **nome da transição**. | 
|  | 47 | + | 
|  | 48 | +:::danger[Importante] | 
|  | 49 | +Lembre-se, você pode ter apenas UM ÚNICO `view-transition-name` por página. | 
|  | 50 | +::: | 
|  | 51 | + | 
|  | 52 | +## Declaração | 
|  | 53 | + | 
|  | 54 | +O objetivo deste desafio é realizar a transição entre os estados mostrados no vídeo abaixo: | 
|  | 55 | + | 
|  | 56 | +<video controls src="https://github.com/tomalaforge/angular-challenges/assets/30832608/1e247bc4-3826-4e1c-afb0-aebdfec2ee85"> | 
|  | 57 | +</video> | 
|  | 58 | + | 
|  | 59 | +Para o estado final mostrado no vídeo seguinte: | 
|  | 60 | + | 
|  | 61 | +<video controls src="https://github.com/tomalaforge/angular-challenges/assets/30832608/27850781-a948-4ed6-a7e4-096473b755aa"> | 
|  | 62 | +</video> | 
|  | 63 | + | 
|  | 64 | +Observe os pontos: | 
|  | 65 | + | 
|  | 66 | +- O cabeçalho desliza para dentro e para fora | 
|  | 67 | +- Cada elemento transiciona suavemente para sua nova localização | 
|  | 68 | + | 
|  | 69 | +### Nível 1 | 
|  | 70 | + | 
|  | 71 | +Foque apenas no primeiro thumbnail e crie uma transição agradável e transparente | 
|  | 72 | + | 
|  | 73 | +### Nível 2 | 
|  | 74 | + | 
|  | 75 | +Crie a mesma transição atraente para todos os thumbnails, mas sem duplicar o `view-transition-name`. Note que a página tem apenas 3 thumbnails; em um cenário real, você pode ter muito mais. | 
|  | 76 | + | 
|  | 77 | +### Nível 3 | 
|  | 78 | + | 
|  | 79 | +Mude para a localização Y correta quando navegando para frente e para trás entre as páginas. | 
0 commit comments