Skip to content
This repository has been archived by the owner on Apr 8, 2021. It is now read-only.

css svg animation post #156

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open

css svg animation post #156

wants to merge 11 commits into from

Conversation

ameliedefrance
Copy link
Contributor

No description provided.

Copy link

@cmeiller cmeiller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'pas mal mais ca mérite de rentrer plus dans le détails sur les animations, avec des bouts de code, ainsi que comment et pourquoi ça marche :)


## Avant l'animation : définir la viewbox

Le svg est limité dans l’espace par sa viewbox. Dans Illustrator ou sketch, la viewbox correspond au canvas ou à _l’artboard_ dans lequel nous dessinons. Si un élément sort de la viewbox, par exemple lors de l'animation, il se sera plus visible. Les dimensions de la viewbox sont donc à réfléchir avant de commencer à animer.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- il se sera plus visible.
+ il ne sera plus visible.


Les transformations css permettent 4 mouvements : la translation, la rotation, la redimension et l’inclinaison oblique. Les transformations qui nous intéressent pour l’animation d’un SVG se situent principalement sur les axes x et y.

Ici, nous jouons avec scale() pour déformer les paths du logo Elao, puis rotate() pour se déplacer en rotation en définissant le centre de la lettre A comme origine.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rajoute des ` autour des méthodes :

`scale()`
`rotate()`


Même si l’animation en css offre déjà de larges possibilités d’animation, elle se confronte à certaines limites, auxquelles on peut toutefois pallier grâce à SMIL ou Javascript.

La plus flagrante est l’absence d’interactivité avec l’animation : difficile à priori de faire réagir un élément svg à des événements uniquement en css. Impossible également de déformer complètement le path d’un élément, ou encore de se déplacer de façon non-linéaire, en suivant une courbe par exemple.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ou encore de se déplacer de façon non-linéaire, en suivant une courbe par exemple.

Faux :p
http://tobiasahlin.com/blog/curved-path-animations-in-css/


## Le mot de la fin

L'éventail de mouvements et d'animations possibles en css ouvre énormément de possibilités, lorsque cette animation est décorative et n'impacte pas le fonctionnel. L'animation en css est largement supportée sur les navigateurs récents (source : [CanIUse](https://caniuse.com/#search=svg)). Pour le reste, il existe d'excellentes alternatives grâce à SMIL -- attention toutefois : pas de support sur IE ni sur Edge, ou en Javascript grâce notamment à Snap.svg.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- lorsque cette animation est décorative et n'impacte pas le fonctionnel.
+ du moment que cette animation reste décorative et n'impacte pas le fonctionnel.

Copy link

@cmeiller cmeiller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je trouve que ça manque de transition fluide dans tes explications. Ce que je veux dire c'est que tu devrais essayer de "raconter une histoire", de te fixer un objectif au début de l'article et de le développer au fur et à mesure de la lecture.
Par exemple, tu peux montrer le résultat en tout début d'article pour attirer l'attention.
Ensuite, dans tes explications, tu peux ajouter des transitions : tu commences par parler de la viewbox avec un exemple concret, jusque là parfait ; ensuite tu parles des transformations avec CSS, je trouve la transition assez dure. Tu pourrais par exemple dire :

Maintenant qu'on a défini notre viewbox dans le body de la page, nous allons y ajouter notre image pour commencer l'animation...

Et à partir de là tu peux rebondir sur le principe des animations etc.
En gros tu vas construire ton animation étape par étape, c'est ce que j'appelle "raconter une histoire".
En gros tu fais tout le temps référence à ta viewbox et tu la fais évoluer :)
Qu'en penses-tu ?

Je sais que je te fais tout modifier encore mais ça nous entraine à faire de meilleurs articles ;)


thumbnail: "/images/posts/thumbnails/animation.jpg"
header_img: "/images/posts/headers/animation.jpg"
tags: ["svg","animation","css", "integration"]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aucune idée si ça un impact mais met des espaces pour plus de régularité entre les items.

author_username: "adefrance"
---

> Le SVG est un langage XML utilisé pour décrire des graphiques en 2 dimensions. Il permet 3 types d'objet graphiques : des formes vectorielles, des images et du texte. -- W3C
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chelou le gros espace entre "il et "permet"


## Avant l'animation : définir la viewbox

Le svg est limité dans l’espace par sa viewbox. Dans Illustrator ou sketch, la viewbox correspond au canvas ou à _l’artboard_ dans lequel nous dessinons. Si un élément sort de la viewbox, par exemple lors de l'animation, il ne sera plus visible. Les dimensions de la viewbox sont donc à réfléchir avant de commencer à animer.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Majuscule à Sketch

```
<svg width="500px" height="500px" viewBox="0 0 500 500">
</svg>
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Micro explication sur la signification du 0 0 500 500 ? :) ainsi que les units qu'il utilise


### Démo: animer la transformation `scale()`
#### La théorie
La fonction `scale()` permet permet de modifier la taille d'un élément selon une échelle sur 2 dimensions : c'est à dire sur les axes X et/ou Y. Par défaut, tous les élements sont à l'échelle 1. Soit `scale(1)`.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2x permet

- c'est à dire
+ c'est-à-dire

// Pas d'étape intermédiaire
to { // État à la fin de l'animation }
}
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Décore tes snippers de code en css (rajoute css après ```)
Et enlève les crochets pour les commentaires. Pas sur du rendu mais faut tester :p

```

```
@keyframes fill {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Peut-être un nom d'animation plus clair ?

La plus flagrante est l’absence d’interactivité avec l’animation : difficile à priori de faire réagir un élément svg à des événements uniquement en CSS. Impossible également de déformer complètement le `path` d’un élément.

### Bonus
#### Suivre une trajectoire courbée
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'aurais pas vu ça comme un bonus mais plutôt un point comme un autre dans ce qu'on ne peut pas faire en CSS en précisant qu'il existe cependant des tips qui font le taff mais qui sont peut-être un peu compliqués et que le CSS devient peut-être plus vraiment adapté à ce niveau là...

### Bonus
#### Suivre une trajectoire courbée

Ce trick est tiré du [blog de Tobias Ahlin](http://tobiasahlin.com/blog/curved-path-animations-in-css/). Il montre qu'il est possible de suivre une trajectoire non-linéaire en animant simultanément un élément et son conteneur invisible -- comme si l'on bougeait dans des sens différents deux calques superposés. En donnant la même durée aux deux animations mais en décalant leur `animation-timing-function` pour qu'elles soient désynchronisées, on obtient l'illusion que l'objet se déplace sur une courbe.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- mais en décalant leur `animation-timing-function`
+ mais en décalant leur fonction de progression (`animation-timing-function`)

Copy link
Contributor

@supertanuki supertanuki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Juste la remarque pour SMIL sinon 👍


## Ce qu’on ne peut pas faire en CSS

Même si l’animation en CSS offre déjà de larges possibilités d’animation, elle se confronte à certaines limites, auxquelles on peut toutefois pallier grâce à SMIL ou Javascript.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lien ou description pour SMIL ?

@xavier-rdo
Copy link
Contributor

👍 Moi, j'aime beaucoup ! (Je suis une quiche en CSS/SVG et l'article m'a paru limpide).

Je propose quelques modifications mineures, et notamment de changer sa rubrique (création d'une nouvelle rubrique de premier niveau "Inté") : #174

[Inte] Svg animation - some minor updates
@cmeiller
Copy link

cmeiller commented Nov 9, 2017

J'aimerais bien prendre le temps de le relire et mettre en stand by encore un peu, sorry Amélie.

Copy link
Contributor

@supertanuki supertanuki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants