You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 7-animation/2-css-animations/article.md
+34-72Lines changed: 34 additions & 72 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -86,11 +86,7 @@ Em `transition-duration` especificamos quanto tempo a animação deve durar. Ele
86
86
87
87
Em `transition-delay` especificamos o atraso *antes* da animação começar. Por exemplo, se `transition-delay` é `1s` e `transition-duration` é `2s`, então a animação começa 1 segundo depois da mudança da propriedade e a duração total é de 2 segundos.
88
88
89
-
<<<<<<< HEAD
90
-
Valores negativos também são possíveis. Dessa forma, a animação começa imediatamente, mas o ponto inicial da animação é depois do valor dado (tempo). Por exemplo, se `transition-delay` é `-1s` e `transition-duration` é `2s`, então a animação começa do estado que estaria na metade de seu ciclo e dura 1 segundo.
91
-
=======
92
-
Negative values are also possible. Then the animation is shown immediately, but the starting point of the animation will be after given value (time). For example, if `transition-delay` is `-1s` and `transition-duration` is `2s`, then animation starts from the halfway point and total duration will be 1 second.
93
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
89
+
Valores negativos também são possíveis. Dessa forma, a animação começa imediatamente, mas o ponto inicial da animação é depois do valor dado (tempo). Por exemplo, se `transition-delay` for `-1s` e `transition-duration` forem `2s`, então a animação começa do estado que estaria na metade de seu ciclo e dura 1 segundo.
94
90
95
91
Essa é uma animação que desloca números de `0` a `9` usando a propriedade CSS `translate`:
96
92
@@ -172,11 +168,7 @@ A propriedade CSS `transition` é baseada na curva:
172
168
.train {
173
169
left: 0;
174
170
transition: left5scubic-bezier(0, 0, 1, 1);
175
-
<<<<<<< HEAD
176
-
/* JavaScript configura a propriedade left para 450px */
177
-
=======
178
-
/* click on a train sets left to 450px, thus triggering the animation */
179
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
171
+
/* clicando numa cadeia configura a propriedade left para 450px, desencadeando assim a animação */
180
172
}
181
173
```
182
174
@@ -199,11 +191,7 @@ CSS:
199
191
.train {
200
192
left: 0;
201
193
transition: left5scubic-bezier(0, .5, .5, 1);
202
-
<<<<<<< HEAD
203
-
/* JavaScript configura a propriedade left para 450px */
204
-
=======
205
-
/* click on a train sets left to 450px, thus triggering the animation */
206
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
194
+
/* clicando numa cadeia configura a propriedade left para 450px, desencadeando assim a animação */
207
195
}
208
196
```
209
197
@@ -242,11 +230,7 @@ No exemplo abaixo, o código da animação é:
242
230
.train {
243
231
left: 100px;
244
232
transition: left5scubic-bezier(.5, -1, .5, 2);
245
-
<<<<<<< HEAD
246
-
/* JavaScript configura a propriedade left para 400px */
247
-
=======
248
-
/* click on a train sets left to 450px */
249
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
233
+
/* clicando numa cadeia configura a propriedade left para 400px */
250
234
}
251
235
```
252
236
@@ -274,11 +258,7 @@ Mas, como criar uma curva Bezier para uma tarefa específica? Existem várias fe
274
258
275
259
### Steps (Passos)
276
260
277
-
<<<<<<< HEAD
278
-
A *timing function*`steps(number of steps[, start/end])` nos permite separar a animação em passos.
279
-
=======
280
-
The timing function `steps(number of steps[, start/end])` allows splitting an transition into multiple steps.
281
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
261
+
A função de tempo `steps(number of steps[, start/end])` nos permite separar uma transição em múltiplos passos.
282
262
283
263
Vamos examiná-la em um exemplo com dígitos.
284
264
@@ -319,17 +299,10 @@ O processo evolui assim:
319
299
320
300
O valor alternativo `end` significaria que a mudança devesse ser aplicada não no início, mas ao final de cada segundo.
321
301
322
-
<<<<<<< HEAD
323
-
Então, o processo evoluiria assim:
302
+
Então, o processo para `steps(9, end)` evoluiria assim:
324
303
325
-
-`0s` -- `0`
326
-
-`1s` -- `-10%` (primeira mudança ao final do primeiro segundo)
327
-
=======
328
-
So the process for `steps(9, end)` would go like this:
329
-
330
-
-`0s` -- `0` (during the first second nothing changes)
331
-
-`1s` -- `-10%` (first change at the end of the 1st second)
332
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
304
+
-`0s` -- `0` (durante o primeiro segundo nada acontece)
305
+
-`1s` -- `-10%` (primeira mudança no final do primeiro segundo)
333
306
-`2s` -- `-20%`
334
307
- ...
335
308
-`9s` -- `-90%`
@@ -434,46 +407,41 @@ Existem vários artigos sobre `@keyframes` e uma [especificação detalhada](htt
434
407
435
408
Provavelmente, você não precisará de `@keyframes` regularmente, a não ser que tudo estiver em movimento constante em sua página.
436
409
437
-
<<<<<<< HEAD
438
-
## Resumo
439
-
440
-
Animações CSS permitem animar de forma suave (ou não) mudanças em uma ou diversas propriedades CSS.
441
-
=======
442
-
## Performance
410
+
## Desempenho (performance)
443
411
444
-
Most CSS properties can be animated, because most of them are numeric values. For instance, `width`, `color`, `font-size`are all numbers. When you animate them, the browser gradually changes these numbers frame by frame, creating a smooth effect.
412
+
A maioria das propriedades CSS podem ser animadas, porque a maioria delas são valores numéricos. Por exemplo, `width`, `color`, `font-size`são todas números. Quando você as anima, o navegador gradualmente muda estes números quadro por quadro, criando um efeito suave.
445
413
446
-
However, not all animations will look as smooth as you'd like, because different CSS properties cost differently to change.
414
+
Contudo, nem todas as animações parecerão tão suaves como você gostaria, porque diferentes propriedades CSS custam a mudar de forma diferente.
447
415
448
-
In more technical details, when there's a style change, the browser goes through 3 steps to render the new look:
416
+
Em detalhes mais técnicos, quando há uma mudança de estilo, o navegador passa por três passos para apresentar o novo aspeto:
449
417
450
-
1.**Layout**: re-compute the geometry and position of each element, then
451
-
2.**Paint**: re-compute how everything should look like at their places, including background, colors,
452
-
3.**Composite**: render the final results into pixels on screen, apply CSS transforms if they exist.
418
+
1.**Layout (estrutura)**: re-computa a geometria e posição de cada elemento, depois
419
+
2.**Paint (pintura)**: re-computa como tudo deveria parecer nos seus lugares, incluindo fundo, cores,
420
+
3.**Composite (composição)**: apresenta os resultados finais no ecrã em pixels, e aplica transformações CSS se elas existirem.
453
421
454
-
During a CSS animation, this process repeats every frame. However, CSS properties that never affect geometry or position, such as`color`, may skip the Layout step. If a `color`changes, the browser doesn't calculate any new geometry, it goes to Paint -> Composite. And there are few properties that directly go to Composite. You can find a longer list of CSS properties and which stages they trigger at<https://csstriggers.com>.
422
+
Durante uma animação CSS, este processo se repete para cada quadro. Contudo, propriedades CSS que nunca afetem a geometria ou posição, tais como`color`, podem saltar o passo *Layout*. Se `color`se alterar, o navegador não calcula nenhuma nova geometria, ele vai para *Paint* -> *Composite*. E existem umas poucas propriedades que vão diretamente para *Composite*. Você pode encontrar uma longa lista de propriedades CSS e que estágios elas desencadeiam em<https://csstriggers.com>.
455
423
456
-
The calculations may take time, especially on pages with many elements and a complex layout. And the delays are actually visible on most devices, leading to "jittery", less fluid animations.
424
+
As calculações podem levar tempo, especialmente em páginas com muitos elementos e uma estrutura complexa. E os atrasos são na verdade visíveis em muitos dispositivos, levando a animações menos fluidas e "saltitantes".
457
425
458
-
Animations of properties that skip the Layout step are faster. It's even better if Paint is skipped too.
426
+
Animações de propriedades que saltam o passo Layout são mais rápidas. E ainda melhor é se Paint também for saltado.
459
427
460
-
The `transform`property is a great choice, because:
461
-
- CSS transforms affect the target element box as a whole (rotate, flip, stretch, shift it).
462
-
- CSS transforms never affect neighbour elements.
428
+
A propriedade `transform`é uma grande escolha, porque:
429
+
-Transformações CSS afetam a caixa do elemento alvo num todo (rodam, viram, esticam, deslocam ela).
430
+
-Transformações CSS nunca afetam elementos vizinhos.
463
431
464
-
...So browsers apply`transform` "on top" of existing Layout and Paint calculations, in the Composite stage.
432
+
...Assim navegadores aplicam`transform` "por cima" de cálculos de Layout e Paint, no estágio Composite.
465
433
466
-
In other words, the browser calculates the Layout (sizes, positions), paints it with colors, backgrounds, etc at the Paint stage, and then applies`transform`to element boxes that need it.
434
+
Por outras palavras, o navegador calcula a Layout (tamanhos, posições), pinta-a com cores, fundo, etc no estágio Paint, e depois aplica`transform`a caixas de elementos que precisarem.
467
435
468
-
Changes (animations) of the`transform`property never trigger Layout and Paint steps. More than that, the browser leverages the graphics accelerator (a special chip on the CPU or graphics card) for CSS transforms, thus making them very effecient.
436
+
Mudanças (animações) da propriedade`transform`nunca desencadeiam os passos Layout e Paint. E ainda mais, o navegador explora o acelerador de gráficos (um *chip* especial na *CPU* ou placa gráfica) para transformações CSS, tornando-as muito eficientes.
469
437
470
-
Luckily, the `transform`property is very powerful. By using`transform`on an element, you could rotate and flip it, stretch and shrink it, move it around, and [much more](https://developer.mozilla.org/docs/Web/CSS/transform#syntax). So instead of `left/margin-left`properties we can use `transform: translateX(…)`, use`transform: scale`for increasing element size, etc.
438
+
Felizmente, a propriedade `transform`é muito poderosa. Ao usar`transform`em um elemento, você pode rodá-lo e virá-lo, esticá-lo e encolhê-lo, deslocá-lo, e [muito mais](https://developer.mozilla.org/pt-BR/docs/Web/CSS/transform), Assim, em vez das propriedades `left/margin-left`nós podemos usar `transform: translateX(…)`, usar`transform: scale`para aumentar o tamanho de um elemento, etc.
471
439
472
-
The `opacity`property also never triggers Layout (also skips Paint in Mozilla Gecko). We can use it for show/hide or fade-in/fade-out effects.
440
+
A propriedade `opacity`também nunca desencadeia Layout (e também salta Paint no Mozilla Gecko). Você a pode usar para efeitos mostrar/esconder ou *fade-in/fade-out*.
473
441
474
-
Paring `transform`with`opacity`can usually solve most of our needs, providing fluid, good-looking animations.
442
+
Formando um par com `transform`e`opacity`geralmente pode resolver muitas das nossas necessidades, provendo animações fluidas e com bom aspeto.
475
443
476
-
For example, here clicking on the`#boat`element adds the class with`transform: translateX(300)`and`opacity: 0`, thus making it move `300px`to the right and disappear:
444
+
Por exemplo, clicando aqui no elemento`#boat`é adicionada a classe com`transform: translateX(300)`e`opacity: 0`, fazendo-o mover `300px`para a direita e desaparecer:
@@ -494,10 +462,10 @@ For example, here clicking on the `#boat` element adds the class with `transform
494
462
</script>
495
463
```
496
464
497
-
Here's a more complex example, with`@keyframes`:
465
+
Aqui está um exemplo mais complexo com`@keyframes`:
498
466
499
467
```html run height=80 autorun no-beautify
500
-
<h2onclick="this.classList.toggle('animated')">click me to start / stop</h2>
468
+
<h2onclick="this.classList.toggle('animated')">clique em mim para começar / parar</h2>
501
469
<style>
502
470
.animated {
503
471
animation: hello-goodbye 1.8sinfinite;
@@ -519,11 +487,9 @@ Here's a more complex example, with `@keyframes`:
519
487
}
520
488
</style>
521
489
```
490
+
## Resumo
522
491
523
-
## Summary
524
-
525
-
CSS animations allow smoothly (or step-by-step) animated changes of one or multiple CSS properties.
526
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
492
+
Animações CSS permitem animar de forma suave (ou passo-a-passo) mudanças em uma ou diversas propriedades CSS.
527
493
528
494
Elas são úteis para a maioria das tarefas envolvendo animações. Também podemos usar *Javascript* para animações, o próximo capítulo é dedicado a isso.
529
495
@@ -536,12 +502,8 @@ Limitações de animações CSS comparadas a animações usando *JavaScript*:
536
502
- Não são apenas as propriedades que mudam. Podemos criar novos elementos em *JavaScript* como parte da animação.
537
503
```
538
504
539
-
<<<<<<< HEAD
540
-
A maioria das animações pode ser implementada usando CSS como descrito nesse capítulo. E o evento `transitionend` nos permite rodar *Javascript* após a animação, integrando-se bem com o código.
541
-
=======
542
-
In early examples in this chapter, we animate `font-size`, `left`, `width`, `height`, etc. In real life projects, we should use `transform: scale()` and `transform: translate()` for better performance.
505
+
Em exemplos anteriores deste capítulo, nós animamos `font-size`, `left`, `width`, `height`, etc. Em projetos na vida real, nós deveríamos usar `transform: scale()` e `transform: translate()` para melhor desempenho.
543
506
544
-
The majority of animations can be implemented using CSS as described in this chapter. And the `transitionend` event allows JavaScript to be run after the animation, so it integrates fine with the code.
545
-
>>>>>>> bc08fd1b32285304b14afea12a9deaa10d13452b
507
+
A maioria das animações pode ser implementada usando CSS como descrito nesse capítulo. E o evento `transitionend` nos permite rodar *Javascript* após a animação, integrando-se bem com o código.
546
508
547
509
Mas, no próximo capítulo, iremos criar animações em *Javascript* para cobrir casos mais complexos.
0 commit comments