Skip to content

Commit 1eb23c1

Browse files
committed
Revision in guide/transitions-overview
1 parent 70fa490 commit 1eb23c1

File tree

1 file changed

+39
-41
lines changed

1 file changed

+39
-41
lines changed

src/guide/transitions-overview.md

Lines changed: 39 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,39 @@
22

33
Vue oferece algumas abstrações que podem lhe ajudar a trabalhar com transições e animações, particularmente em resposta à mudança de algo. Algumas dessas abstrações incluem:
44

5-
- Hooks para componentes entrando e saindo do DOM, em CSS e JS, usando o componente interno `<transition>`.
5+
- Gatilhos para componentes entrando e saindo do DOM, em CSS e JS, usando o componente interno `<transition>`.
66
- Modos de Transição para que você possa orquestrar a ordenação durante a transição.
7-
- Hooks para quando múltiplos elementos estão atualizando em posição com técnicas FLIP aplicadas secundariamente para aumentar a performance, usando o componente `<transition-group>`.
7+
- Gatilhos para quando múltiplos elementos estão atualizando em posição, com técnicas FLIP aplicadas em seu interior para aumentar a performance, usando o componente `<transition-group>`.
88
- Transição de diferentes estados em uma aplicação, com `watchers`.
99

10-
Vamos cobrir todos esses e mais nas próximas seções deste guia. Contudo, além dessas ofertas úteis de API, é importante mencionar que as declarações de classe e estilo mencionadas antes podem também ser usadas para aplicar animações e transições, para casos de uso simplificados.
10+
Vamos cobrir todos esses e mais nas próximas seções deste guia. Contudo, além dessas ofertas úteis de API, é importante mencionar que as declarações de classe e estilo mencionadas antes podem também ser usadas para aplicar animações e transições, para casos de uso simplificados.
1111

12-
Na próxima seção, vamos passar por conceitos básicos de transições e animações web, assim como oferecer links para alguns destes recursos para exploração posterior. Se você já estiver familiarizado com animação web e como estes princípios podem funcionar com algumas das directivas do Vue, sinta-se livre para pular a próxima seção. Para quem estiver buscando aprender mais sobre os básicos de animação web, continue a leitura.
12+
Na próxima seção, vamos passar por conceitos básicos de transições e animações web, assim como oferecer links para alguns destes recursos para exploração posterior. Se você já estiver familiarizado com animação web e como estes princípios podem funcionar com algumas das directivas do Vue, sinta-se livre para pular a próxima seção. Para quem estiver buscando aprender mais sobre os básicos de animação web, continue a leitura.
1313

14-
## Animações & Transições baseadas em classes
14+
## Animações & Transições Baseadas em Classes
1515

1616
Ainda que o componente `<transition>` pode ser maravilhoso para componentes que entram e saem, você também pode ativar uma animação sem montar um componente, adicionando uma classe condicional.
1717

1818
```html
1919
<div id="demo">
2020
Aperte este botão para fazer algo que você não deveria estar fazendo:<br />
2121

22-
<div :class="{ mexer: ativado }">
23-
<button @click="ativado = true">Clique-me</button>
24-
<span v-if="ativado">Ah não!</span>
22+
<div :class="{ shake: noActivated }">
23+
<button @click="noActivated = true">Clique-me</button>
24+
<span v-if="noActivated">Ah não!</span>
2525
</div>
2626
</div>
2727
```
2828

2929
```css
30-
.mexer {
30+
.shake {
3131
animation: shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
3232
transform: translate3d(0, 0, 0);
3333
backface-visibility: hidden;
3434
perspective: 1000px;
3535
}
3636

37-
@keyframes mexer {
37+
@keyframes shake {
3838
10%,
3939
90% {
4040
transform: translate3d(-1px, 0, 0);
@@ -62,7 +62,7 @@ Ainda que o componente `<transition>` pode ser maravilhoso para componentes que
6262
const Demo = {
6363
data() {
6464
return {
65-
ativado: false
65+
noActivated: false
6666
}
6767
}
6868
}
@@ -71,23 +71,22 @@ Vue.createApp(Demo).mount('#demo')
7171
```
7272

7373
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="css,result" data-user="Vue" data-slug-hash="ff45b91caf7a98c8c9077ad8ab539260" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Criar a animação por meio de uma classe">
74-
<span>See the Pen <a href="https://codepen.io/team/Vue/pen/ff45b91caf7a98c8c9077ad8ab539260">
74+
<span>Veja o exemplo <a href="https://codepen.io/team/Vue/pen/ff45b91caf7a98c8c9077ad8ab539260">
7575
Criar a animação por meio de uma classe</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
7676
no <a href="https://codepen.io">CodePen</a>.</span>
7777
</p>
7878
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
7979

80-
# Transições com ligações de estilo
80+
# Transições com Ligações de Estilo
8181

82-
Alguns efeitos de transições podem ser aplicados pela interpolação de valores, por exemplo, por ligar um estilo com um elemento enquanto ocorre uma interação.
83-
Veja o seguinte exemplo:
82+
Alguns efeitos de transições podem ser aplicados pela interpolação de valores, por exemplo, ao ligar um estilo com um elemento enquanto ocorre uma interação. Veja o seguinte exemplo:
8483

8584
```html
8685
<div id="demo">
8786
<div
88-
@mousemove="coordenadaX"
87+
@mousemove="xCoordinate"
8988
:style="{ backgroundColor: `hsl(${x}, 80%, 50%)` }"
90-
class="areaDeMovimento"
89+
class="movearea"
9190
>
9291
<h3>Mexa o seu mouse pela tela...</h3>
9392
<p>x: {{x}}</p>
@@ -96,7 +95,7 @@ Veja o seguinte exemplo:
9695
```
9796

9897
```css
99-
.areaDeMovimento {
98+
.movearea {
10099
transition: 0.2s background-color ease;
101100
}
102101
```
@@ -109,7 +108,7 @@ const Demo = {
109108
}
110109
},
111110
methods: {
112-
coordenadaX(e) {
111+
xCoordinate(e) {
113112
this.x = e.clientX
114113
}
115114
}
@@ -125,54 +124,52 @@ Vue.createApp(Demo).mount('#demo')
125124
</p>
126125
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
127126

128-
Neste exemplo, estamos criando uma animação por meio do uso de interpolação, adjunto ao movimento do mouse. A transição CSS é aplicada para o elemento também, permitindo que o elemento saiba que tipo de atenuação é usada ao se atualizar.
127+
Neste exemplo, estamos criando uma animação por meio do uso de interpolação, adjunto ao movimento do mouse. A transição CSS é aplicada ao elemento também, permitindo que o elemento saiba que tipo de atenuação é usada ao se atualizar.
129128

130129
## Performance
131130

132131
Você pode perceber que as animações mostradas acima estão usando coisas como `transforms`, e aplicando propriedades estranhas como `perspective` - por que foram construídos assim em vez de simplesmente usar `margin` e `top`, etc?
133132

134-
Podemos criar animações extremamente lisas para a web estando cientes da performance. Queremos que o hardware acelere elementos quando pudermos, e que use as propriedades que não disparem a repintura dos mesmos. Vamos ver como podemos fazer isso.
133+
Podemos criar animações extremamente suaves para a web estando cientes da performance. Queremos que o hardware acelere elementos quando pudermos, e que use as propriedades que não disparem a repintura dos mesmos. Vamos ver como podemos fazer isso.
135134

136-
### Transform e Opacidade
135+
### Transformações e Opacidade
137136

138-
Podemos verificar recursos como [Gatilhos CSS](https://csstriggers.com) para vermos quais propriedades vão desencadear repinturas se nós a animarmos. Aqui, caso você olhe a parte de `transform`, você verá:
137+
Podemos verificar recursos como [Gatilhos CSS](https://csstriggers.com) para vermos quais propriedades vão desencadear repinturas se nós a animarmos. Aqui, caso você olhe a parte de `transform`, você verá:
139138

140-
> As mudanças do transform não desencadeiam em mudanças geométricas ou de pintura, o que é muito bom. Isso significa que a operação pode provavelmente ser realizada por pela thread de composição com o auxílio da GPU.
139+
> As mudanças do `transform` não desencadeiam mudanças geométricas ou de pintura, o que é muito bom. Isso significa que a operação provavelmente será realizada pela _thread_ de composição com o auxílio da GPU.
141140
142141
A opacidade se comporta de maneira similar. Assim, são candidatos ideais para movimentos na web.
143142

144143
### Aceleração de Hardware
145144

146-
Propriedades como `perspective`, `backface-visibility`, e `transform: translateZ(x)` vão permitir ao browser saber quando se necessite de aceleração de hardware.
145+
Propriedades como `perspective`, `backface-visibility`, e `transform: translateZ(x)` vão permitir ao browser saber quando se necessita de aceleração de hardware.
147146

148147
Se você gostaria de acelerar o hardware de um elemento, você pode aplicar qualquer uma dessas propriedades (não necessariamente só uma):
149148

150-
151149
```css
152150
perspective: 1000px;
153151
backface-visibility: hidden;
154152
transform: translateZ(0);
155153
```
156-
Muitas bibliotecas JS como GreenSock vão assumir que você quer aceleração de hardware e as vão aplicar por padrão, assim você não precisa configurá-las manualmente.
157154

155+
Muitas bibliotecas JS como GreenSock vão assumir que você quer aceleração de hardware e as vão aplicar por padrão, assim você não precisa configurá-las manualmente.
158156

159157
## Tempo de Animação
160158

161-
Para transições de UI simples, de um estado para outro sem estados intermediários, é comum usar tempos entre 0.1s e 0.4s, e muitas pessoas acham que _0.25s_ tende a ser o ponto certo. Você pode usar este tempo para tudo? Não necessariamente. Se você tem algo que precisa se mover uma distância maior ou que tenha mais passos ou mudanças de estado, 0.25s não vai funcionar tão bem e você terá que ser muito mais intencional, e o tempo terá a necessidade de ser mais único. O que não significa que você pode ter ótimos padrões que você repete dentro da sua aplicação.
159+
Para transições de UI simples, de um estado para outro sem estados intermediários, é comum usar tempos entre 0.1s e 0.4s, e muitas pessoas acham que _0.25s_ tende a ser o ponto certo. Você pode usar este tempo para tudo? Não necessariamente. Se você tem algo que precisa se mover uma distância maior ou que tenha mais passos ou mudanças de estado, 0.25s não vai funcionar tão bem e você terá que ser muito mais intencional, e o tempo terá a necessidade de ser mais único. O que não significa que você não possa ter ótimos padrões que você repete dentro da sua aplicação.
162160

163161
Você também pode se dar conta de que entradas têm uma aparência melhor com um pouco mais de tempo que uma saída. O usuário tipicamente está sendo guiado durante uma entrada e é um pouco menos paciente na saída, por que querem seguir seu caminho.
164162

165-
166163
## Atenuação
167164

168-
A atenuação é um modo importante de transmitir profundidade em uma animação. Um dos erros mais comuns que novatos em animação é usar `ease-in` para entradas, e `ease-out` para saídas. Quando, na verdade, você vai precisar do oposto.
165+
A atenuação é um modo importante de transmitir profundidade em uma animação. Um dos erros mais comuns que novatos em animação é usar `ease-in` para entradas, e `ease-out` para saídas. Quando, na verdade, você vai precisar do oposto.
169166

170167
Se tivéssemos que aplicar estes estados a uma transição, ela ficaria algo assim:
171168

172169
```css
173170
.button {
174171
background: #1b8f5a;
175-
/* aplicada ao estado inicial, assim esta transição será aplicada para o estado de retorno */
172+
/* aplicada ao estado inicial, assim esta transição será aplicada ao estado de retorno */
176173
transition: background 0.25s ease-in;
177174
}
178175

@@ -184,13 +181,13 @@ Se tivéssemos que aplicar estes estados a uma transição, ela ficaria algo ass
184181
```
185182

186183
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="css,result" data-user="Vue" data-slug-hash="996a9665131e7902327d350ca8a655ac" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Exemplo de transição atenuada">
187-
<span>Olhe o Pen <a href="https://codepen.io/team/Vue/pen/996a9665131e7902327d350ca8a655ac">
184+
<span>Veja o Pen <a href="https://codepen.io/team/Vue/pen/996a9665131e7902327d350ca8a655ac">
188185
Exemplo de transição atenuada</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
189186
no <a href="https://codepen.io">CodePen</a>.</span>
190187
</p>
191188
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
192189

193-
A atenuação pode inclusive transmitir a qualidade do material sendo animado. Olhe este pen, por exemplo, qual bola você acha que é rígida e qual é macia?
190+
A atenuação pode inclusive transmitir a qualidade do material sendo animado. Olhe este pen, por exemplo, qual bola você acha que é rígida e qual é macia?
194191

195192
<p class="codepen" data-height="500" data-theme-id="39028" data-default-tab="result" data-user="sdras" data-slug-hash="zxJWBJ" data-preview="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Demo de bola quicando">
196193
<span>Veja o Pen <a href="https://codepen.io/sdras/pen/zxJWBJ">
@@ -199,18 +196,18 @@ A atenuação pode inclusive transmitir a qualidade do material sendo animado. O
199196
</p>
200197
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
201198

202-
Você pode obter muitos efeitos únicos e fazer sua animação bem estilosa ajustando sua acentuação. O CSS lhe permite modificar isso ajustando uma propriedade bezier cúbica, [este playground](https://cubic-bezier.com/#.17,.67,.83,.67) por Lea Verou é muito útil para explorar isso.
199+
Você pode obter muitos efeitos únicos e fazer sua animação bem estilosa ajustando sua atenuação. O CSS lhe permite modificar isso ajustando uma propriedade bezier cúbica, [este playground](https://cubic-bezier.com/#.17,.67,.83,.67) por Lea Verou é muito útil para explorar isso.
203200

204-
Apesar de que você possa alcançar grandes efeitos de animações simples com os dois handles que a acentuação por bezier-cúbico oferece, Javascript permite múltiples handles, e portanto, permite muito mais variação.
201+
Apesar de que você possa alcançar grandes efeitos para animações simples com as duas alças que a acentuação por bezier-cúbico oferece, Javascript permite múltiplas alças, e portanto, permite muito mais variação.
205202

206203
![Comparação de acentuação](/images/css-vs-js-ease.svg)
207204

208-
Tomemos um efeito de salto, por exemplo. Em CSS temos que declarar cada keyframe, para cima e para baixo. Em JavaScript, podemos expressar todo o movimento dentro da acentuação declarando `bounce` na [API GreenSock (GSAP)](https://greensock.com/)(outras bibliotecas JS têm outros tipos de padrões de acentuação).
205+
Tomemos um efeito de salto, por exemplo. Em CSS temos que declarar cada keyframe, para cima e para baixo. Em JavaScript, podemos expressar todo o movimento dentro da acentuação declarando `bounce` na [API GreenSock (GSAP)](https://greensock.com/) (outras bibliotecas JS têm outros tipos de padrões de acentuação).
209206

210207
Aqui está o código usado para o salto em CSS (exemplo de animate.css):
211208

212209
```css
213-
@keyframes saltoParaBaixo {
210+
@keyframes bounceInDown {
214211
from,
215212
60%,
216213
75%,
@@ -242,19 +239,20 @@ Aqui está o código usado para o salto em CSS (exemplo de animate.css):
242239
}
243240
}
244241

245-
.saltoParaBaixo {
246-
animation-name: saltoParaBaixo;
242+
.bounceInDown {
243+
animation-name: bounceInDown;
247244
}
248245
```
246+
249247
E aqui está o mesmo salto em JS usando GreenSock:
250248

251249
```js
252250
gsap.from(element, { duration: 1, ease: 'bounce.out', y: -500 })
253251
```
254252

255-
Vamos usar o GreenSock para alguns dos exemplos nas seções seguintes. Eles têm um ótimo [visualizador de atenuação](https://greensock.com/ease-visualizer) que vai lhe permitir construir atenuações bem trabalhadas.
253+
Vamos usar o GreenSock para alguns dos exemplos nas seções seguintes. Eles têm um ótimo [visualizador de atenuação](https://greensock.com/ease-visualizer) que vai lhe permitir construir atenuações bem trabalhadas.
256254

257-
## Leituras adicionais
255+
## Leituras Adicionais
258256

259257
- [Designing Interface Animation: Improving the User Experience Through Animation by Val Head](https://www.amazon.com.br/dp/B01J4NKSZA)
260258
- [Animation at Work by Rachel Nabors](https://abookapart.com/products/animation-at-work)

0 commit comments

Comments
 (0)