Pages :
(reprise du message précédent)

Tu n'es pas obligé de les fusionner mais c'est plus optimum et ça évite de devoir gérer le délai d'attente entre chaque animation.
Ca facilite la lecture et la maintenance et ça évite à terme de se retrouver avec des animations qui ne sont pas utilisée (quand on atteint le millier de ligne ça joue Smiley cligne )
Du coup en cas de bug tu t'y retrouve plus vite.

D'autant que si tu préfixes toi-même tu verras que vas te retrouver avec un beau chapelet de code (version webkit, moz, o et sans prefixe).

PilouPilou a écrit :
C'est quand même pas évident tout de suite d'animer en CSS
C'est surtout du calcul et de la logique Smiley smile rien de bien sorcier en fait mais tellement efficace !
Hello Greg,
Avec tes conseils, je me suis bien amusé ces derniers jours en animation CSS Smiley smile
Mais j'ai un nouveau point de blocage. Imaginons que j'ai terminé l'animation de ma bannière. J'ai réalisé une bannière de 30 secondes avec X objets qui ont différentes animations.
Ma question : comment je fais pour que ma bannière de 30 secondes boucle ? Car la propriété iteration me permet juste de boucler une animation et non l'ensemble de ma bannière. Suis obligé de passer par du JS ?

Merci pour ton aide Smiley smile
Il serait bien dommage d'induire du JS pour une animation. Mais disons qu'en l'état oui, JS pourrait-être une solution, surtout si tes animations n'ont pas les mêmes cycles (durée).
Le fait est que boucler plusieurs animations css tout en les synchronisant peut vite conduire à se taper la tête contre le mur.

Perso, et dans la mesure du possible, je tente au maximum de concaténer les animations. Le but étant de n'obtenir qu'un minimum d'animations qui durent toutes la même durée (pour toi 30s). Ensuite pour les synchroniser ça devient du billard car ayant toute la même durée, on peut les boucler à l'infini.

Tout est question de calcul, n'hésite pas à prendre une feuille de papier et d'y coucher tes timers. Ca aide beaucoup à y voir clair et à simplifier.

A la limite, pourquoi tu ne la posterais pas sur Codepen ; les contributeurs et moi-même pourrions certainement mieux te conseiller.
Merci pour ton retour.
Je vais regrouper les animations pour en avoir un minimum, c'est quand même pas évidant ce principe de % dans les keyframes... Smiley rolleyes
Après ça je poste sur Codepen pour que tu me dises ce que t'en penses Smiley smile
PilouPilou a écrit :
c'est quand même pas évidant ce principe de % dans les keyframes... Smiley rolleyes
Hô oui c'est plutôt chiant de sans cesse passer de seconde à pourcent et vice-versa, mais que veux-tu, c'est le principe en Css ! :-P
Au moins ça permet de réviser la règle de trois Smiley lol

Le pire c'est encore quand tu dois définir une progression via cubic-bezier qui ajoute encore à la complexité de la chose.
A ce sujet, même si l'outil de Léa Verou n'est pas mal, je trouve celui de Matthiew Lein encore plus pratique pour cette tâche.

Bon courage !
Pas faux pour la règle de 3 Smiley smile
Ce qui est chiant c'est que si on a besoin de décaler notre animation d'une seconde, il faut revoir tous les % ! Smiley lol
Merci pour les liens. Tu as l'habitude d'utiliser des bibliothèques d'animations type animate.css où bien tu fais tout à la main ?
PilouPilou a écrit :

Ce qui est chiant c'est que si on a besoin de décaler notre animation d'une seconde, il faut revoir tous les % ! Smiley lol
D'où, tu t'en souviens j'en ai parlé plus haut, la feuille de papier Smiley cligne Elle évite de se rendre compte à la fin du codage qu'on s'est planté d'une seconde.

a écrit :
Tu as l'habitude d'utiliser des bibliothèques d'animations type animate.css où bien tu fais tout à la main ?
Dans le domaine je ne suis qu'un apprenti. Beaucoup parlent de forge, je considère simplement que c'est en faisant qu'on devient faiseur. In facto j'évite l'utilisation de bibliothèque et assume chacun de mes échecs afin d'en tirer leçon.

Non pas que je sois radicalement contre mais j'estime qu'il m'est plus profitable d'apprendre à écrire qu'à insérer.
Je pense que ce genre d'outils m'est intéressant que lorsque je maitrise suffisamment pour être capable de faire de même. Donc utiliser les bibliothèque pour m'affranchir de refaire une énième fois, oui ! Les utiliser pour m'affranchir de l'apprentissage, absolument pas !
D'autre part je suis trop paranoïaque pour totalement faire confiance à un code importé. Il m'apparaît essentiel de savoir le décoder de A à Z afin de réellement savoir de quoi il en retourne dans le script donc on en revient au début de ce paragraphe : l'apprentissage. La boucle est bouclée.
Enfin, je préfère apprendre le langage en lui-même qu'apprendre à utiliser une librairie, une bibliothèque ou autre.

Tout ça pour dire que je ne suis pas familier de Animate.css.

Je précise que coder n'est pas mon métier. De fait je ne suis pris ni par les délais ni par des contraintes client ou employeur. J'ai le loisir d'aller à mon rythme et de me plonger uniquement dans ce qui m'intéresse et/ou est à ma portée. En contexte professionnel, mon raisonnement serait tout autre.

D'ailleurs ton sujet m'a donné l'envie de re-plonger dans l'univers des Animations Css. Non pas que j'en ai le besoin pour mes projets (du moins pas dans l'immédiat) mais juste par curiosité. De ce fait je fais mu-muse ici. Les "notes" sont des conclusions récentes que j'ai observé à propos.


Bon dimanche ! Smiley smile


Edit : Pour en revenir à l'histoire des % qui changent si le timing change, je pense que ce qui peut vraiment beaucoup aider à ce sujet sont les pré-processeurs qui peuvent automatiser le calcul.
Dans la même veine, je pense qu'il est faisable d'obtenir le même automatisme en Php, soit le calcul des pourcentages en fonction d'une durée indiquée en amont.
Modifié par Greg_Lumiere (27 Nov 2016 - 08:47)
Hello Greg,
Du coup, toi tu m'as donné envie de sortir ma tête du animate.css et de regarder un peu plus près le code pour l'écrire moi-même et surtout comprendre la logique pour pouvoir le répéter et imaginer mes animations Smiley cligne

J'ai mis un bout de code sur Codepen de la dernière animation que j'ai faite sans tricher avec une librairie : ici

Est-ce que tu vois des choses qui peuvent être améliorées dans le code ?

J'ai intégré mon nuage en .svg pour gagner en poids. Par contre, malgré mes recherches je n'arrive absolument pas à comprendre comment gérer précisément la taille de mon nuage. Je ne comprends pas comment ce gère la propriété viewBox, j'ai juste vu que ça faisait changer la taille...

http://zupimages.net/up/16/48/aylg.png
http://zupimages.net/up/16/48/zmz7.png

En gros je voudrais logiquement pouvoir gérer la taille de mon nuage et que le svg fasse exactement la taille de mon nuage. Et non pas que mon nuage soit dans un cadre 10 fois plus grand que lui... Smiley biggrin
PilouPilou a écrit :

Du coup, toi tu m'as donné envie de sortir ma tête du animate.css et de regarder un peu plus près le code pour l'écrire moi-même et surtout comprendre la logique pour pouvoir le répéter et imaginer mes animations Smiley cligne
Content de l'appendre ! Smiley biggrin

PilouPilou a écrit :
J'ai mis un bout de code sur Codepen de la dernière animation que j'ai faite sans tricher avec une librairie : ici
J'y jette un oeil (le bon) tout à l'heure, promis !

PilouPilou a écrit :
J'ai intégré mon nuage en .svg pour gagner en poids. Par contre, malgré mes recherches je n'arrive absolument pas à comprendre comment gérer précisément la taille de mon nuage. Je ne comprends pas comment ce gère la propriété viewBox, j'ai juste vu que ça faisait changer la taille...

En fait la propriété viewBox défini la taille initiale du svg. Normalement ses valeurs (0 0 x y) définissent la taille de ton image dans Inkscape (ou tout autre logiciel) quand tu es à zoom 0. Pour ce faire il faut retailler ton calque juste à la taille de ton nuage (sans aucune marge).

Par exemple tu travailles sur un calque de 800x450 px (valeurs au pif) et tu dessine un joli nuage dedans. Quand ton travail est terminé, tu réajuste la taille du calque à pile-poil la taille de ton motif (ici ton nuage). Sans marge, c'est important car plus facile ensuite à positionner en Css.

Toujours dans notre exemple, disons que maintenant ton calque mesure 180*72px. Tu intègrera ton svg avec viewBox(0 0 180 72).

Le dimensionnement se fera en Css lorsque tu déclareras des valeurs à width et à height.
Par exemple avec width=360px et height=144px tu auras un facteur d'agrandissement égale à 2.
Je cause ici en pixel mais tu peux bien sûr utiliser des unités relatives, l'important étant, bien sûr, de garder le même ratio L*l (sinon ton nuage ressemblera à un schwing-gum écrabouillé Smiley biggol )

Je disais de définir la viewBox sans aucune marge car c'est en Css que tu ajoutera les marges à tes objets. Ca t'évite de te retrouver avec des espaces incontrôlables et de pouvoir ajuster au pixel près tes motifs.

Pour ma part, voici comment j'intègre mes svg (c'est un choix personnel et diverses méthodes existent pour un résultat semblable) :
1] J'ai un fichier Sprite.svg qui contient tous mes symboles. Celui-ci est constitué comme suit
<svg display="none" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <symbol id="icone1" viewBox="0 0 64 64">
      <path class="Svg-Front" d="..."/>
    </symbol>
    <symbol id="icone2" viewBox="0 0 48 48">
      <path d="..." transform="translate(0 -1004.362) translate(0 1004.362)"/>
      <path d="..." transform="translate(0 -1004.362) translate(0 1004.362)"/>
    </symbol>
    <symbol id="icone3" viewBox="0 0 16 16">
      <path d="..."/>
    </symbol>
  </defs>
</svg>

2] Côté intégration, j'introduis en php ce fichier juste après mon body
include_once Chemin/de/mon/Sprite.svg;

3] Ensuite je fais appel à mes symboles là où j'en ai besoin (en html) suivant cette syntaxe
<svg>
                    <switch>
                     <use xlink:href="#icone1"/>
                      <foreignObject class="Svg-Foreign" width="0" height="0">',
                        <div>icone1 (ici un fallback)</div>
                      </foreignObject>
                    </switch>
                  </svg>

4] Ce qui me permet après en Css de personnaliser ainsi

                #icone1 {/* ciblage classique par class, ID ou position dans le code */
                  width: 1.8em;
                  height: 1.8em;
                  vertical-align: middle;
                  fill: currentColor;
                  margin: 5px 3px;
                }
/* PS: dans le cas où tu souhaites cibler ton svg suivant le contexte, par exemple
.mon-menu li svg {}
Veille à ce que le terme "svg" soit en minuscule.
Pour les autres balises le ciblage se fait correctement mais pas pour un SVG */
Tu remarque que c'est dans cette dernière partie où mon svg prend sa taille finale.

Voili voilou.


Cette méthode s'applique bien sûr aux graphismes mais tu peux aussi définir des transformation et/ou animation svg dans ton sprite.svg. Par contre pour y faire appel via Css je ne sais pas trop (j'ai jusque là encore jamais fait ça) car je doute que tu puisse utiliser <use xlink> en Css mais si ça t'intéresse je dois avoir garder dans un coin un lien qui en parle.


A propos de la personnalisation d'un svg en css :
Sache que toutes les propriétés Css ne sont pas applicable sur un svg mais que
toutes les propriétés (toutes ? il me semble que oui) svg sont applicable sur un svg via css (par exemple fill pour colorier).

Maintenant si tu souhaites réaliser un "tableau" animé en svg, pourquoi ne pas tout faire en svg ? Le format svg dispose de transformations et de capacité d'animation très performantes si tant est que tu ne doivent pas assurer la rétro-compatibilité jusque l'âge du fer (IE8).
Modifié par Greg_Lumiere (28 Nov 2016 - 14:40)
Ha oui, j'ai oublié de préciser qu'il est important dans le sprite svg de commencer ta déclaration en masquant ton sprite sinon tes chemins vont apparaître là où tu l'introduis donc n'oublie pas de commencer par
<svg display="none"...
Smiley smile
PilouPilou a écrit :

J'ai mis un bout de code sur Codepen de la dernière animation que j'ai faite sans tricher avec une librairie : ici

Est-ce que tu vois des choses qui peuvent être améliorées dans le code ?
T'as pas mal travaillé ! Smiley biggrin

Ca reste perfectible et je vois clairement ton embarras avec tes viewBox. Je pourrais passer un moment à faire l'éloge de ton travail mais à part te faire enfler les chevilles ça ne t'apportera pas grand chose.

Alors je vais cibler les quelques défauts.
* la propriété heigh n'existe pas, c'est height !
* pourquoi encombrer ton html avec les propriétés css (width, height, fill) alors que tu peux tout regrouper dans le css (il est là pour ça !)
* Tente au maximum d'avoir des dimensions arrondies de tes objets (14px * 9px et non 14.plein_de_chiffres * 9.plein_de_chiffres)
* Selon ton usage de la propriété animaton, il vaut parfois mieux utiliser les propriétés individuelles au lieu de toujours répéter les attributs de animation:

Pour illustrer mes propos, j'ai mis à jour l'exemple que je t'avais faits en :
- reprenant ton path svg (je l'ai redimensionné et ai fixé sa viewBox)
- intégrant ton svg via un sprite
- animant sommairement à titre d'exemple quelques objets et ce pour démontrer le dimensionnement des éléments, leur positionnement ainsi que leur animation.

Une idée aussi, par exemple si le plus lent de tes nuages parcours l'animation en x secondes, essaie de faire durer les autre un multiple de ce nombre ainsi tu obtiendras une boucle et une remise à zéro implicite.


Beau travail, amuse-toi bien avec tout ça ! Smiley biggrin
Hello Greg,
Merci du temps que tu m'accordes Smiley smile Pas eu le temps de mon côté de me reposer dessus depuis !

"* la propriété heigh n'existe pas, c'est height !"
Évidemment c'était une faute de frappe Smiley lol

Je vais décortiquer ton code et essayer de tout comprendre !
Bonjour Piloupilou et Greg_Lumiere,
vos échanges sont passionnants, et vous lire et vous comprendre est riche d'enseignement.

Toutefois, et hors de mon esprit de commettre une quelconque réserve sur votre conversation, il m'apparaîtrait que css3, affecté d'une larme joyeuse de javascript eut pu solutionner le topique très simplement : par un jeu de basculements de class (par condition js) qui entendraient des effets de transition css3 successifs.

En outre je ne comprends pas que soit récurrent la détermination de proscrire (sur Alsac) l'usage croisé de javascript d'avec css3 : cela y serait pour moi de vivre la nuit, mais à la seule chandelle du css3 ...

Pour vous être loyal, j'expose ceci : http://sentrais.eu/diaporama_v-8/diaporama-8.htm

Très cordialement vôtre.
Modifié par pictural (02 Dec 2016 - 10:54)
@PilouPilou
PilouPilou a écrit :

"* la propriété heigh n'existe pas, c'est height !"
Évidemment c'était une faute de frappe Smiley lol

Je m'en doutais mais pas sûr que le navigateur fasse de même Smiley cligne

@Pictural
Pictural a écrit :
vos échanges sont passionnants, et vous lire et vous comprendre est riche d'enseignement
Merci du compliment Pictural. Smiley biggrin

Pictural a écrit :
il m'apparaîtrait que css3, affecté d'une larme joyeuse de javascript eut pu solutionner le topique très simplement : par un jeu de basculements de class (par condition js) qui entendraient des effets de transition css3 successifs
Il est vrai. A ce propos JS peut solutionner quasiment toutes les problématiques.
Mais vois-tu, c'est bien là que nos philosophies divergent. Alors que tu prône les avantages de ce langage, j'y suis quand à moi beaucoup plus réservé. Sans m'épancher dans ce débat qui ne pourrait prendre fin, disons que ma philosophie à ce sujet rejoint fortement ce que je pense des librairies, bibliothèques etc (j'en parlais plus haut si t'as bien lu).

Dans les faits je ne réserve ce langage qu'aux apparats et au confort. La surcouche futile que je me permet d'inclure en guise de "bonus" pour l'utilisateur mais en aucun cas en remplacement d'une possibilité offerte par le html, le css et le php (qui entre-nous soit dit ne peuvent être désactivés par l'utilisateur, et que se passe-t-il sur ton exposé si c'est le cas ?! ; bon ok, il peut désactiver le css aussi mais...).

Tu l'évoque dans ton message, j'y vois ici un échange dans le but de l'apprentissage et la maitrise des animations en Css pure même s'il va de soit que d'autres techniques peuvent tout à fait être envisagées par l'auteur du sujet. A lui de faire ses choix et je ne pourrais n'en qu'être spectateur.

Pour ma part, il ne s'agit pas de proscription mais d'usage avec parcimonie.
Le JS est pour moi la pincée de sel qui va exhausser les saveurs.

Respectueusement.
Modifié par Greg_Lumiere (02 Dec 2016 - 14:45)
Zelena a écrit :

vos échanges sont passionnants, et vous lire et vous comprendre est riche d'enseignement

Il y a méprise, je pense...

C'est pictural qui va être vexé.

Smiley smile
Zelena a écrit :

Il y a méprise, je pense...

C'est pictural qui va être vexé.

Smiley smile

Hôooo la boulette ! Smiley confused Smiley sweatdrop Smiley confused


Milles excuses, l'erreur est corrigée.

Je mériterais d'être fouetté en place publique les fesses à l'air. Smiley ohwell
Greg_Lumiere a écrit :

Milles excuses, l'erreur est corrigée.

Je mériterais d'être fouetté en place publique les fesses à l'air.
No prob', but any job on line !
Modifié par pictural (02 Dec 2016 - 16:11)
pictural a écrit :
Bonjour Piloupilou et Greg_Lumiere,
vos échanges sont passionnants, et vous lire et vous comprendre est riche d'enseignement.

Toutefois, et hors de mon esprit de commettre une quelconque réserve sur votre conversation, il m'apparaîtrait que css3, affecté d'une larme joyeuse de javascript eut pu solutionner le topique très simplement : par un jeu de basculements de class (par condition js) qui entendraient des effets de transition css3 successifs.

En outre je ne comprends pas que soit récurrent la détermination de proscrire (sur Alsac) l'usage croisé de javascript d'avec css3 : cela y serait pour moi de vivre la nuit, mais à la seule chandelle du css3 ...

Pour vous être loyal, j'expose ceci : http://sentrais.eu/diaporama_v-8/diaporama-8.htm

Très cordialement vôtre.


Bonjour Pictural,

Merci pour ton point de vue. Pour ma part, je n'y connais absolument rien en javascript, je n'ai aucune base. C'est pour cette raison que je préfère d'abord pousser mes connaissances en CSS. Mais j'ai bien le sentiment qu'il va bien falloir me mettre quand même au Javascript...D'ailleurs je me demandais, le JS évolue sans cesse ? ou bien un bouquin de 2012 sera à jour ?
Edition 2015 : http://www.ecma-international.org/ecma-262/6.0/ Si tu lisais l'anglo-américain, cette table très austère mériterait cependant d'être illustrée de tout exemple.

Entretemps, Fichier->Enregistrer sous ... cette longue page ne saurait être idiot.

Ceci, en français est une meilleure approche pour un début d'apprentissage : https://developer.mozilla.org/fr/docs/Web/JavaScript/Nouveaut%C3%A9s_et_historique_de_JavaScript
Modifié par pictural (03 Dec 2016 - 00:58)
Pages :