IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Plusieurs animations décalées dans le temps


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Par défaut Plusieurs animations décalées dans le temps
    Bonjour,

    J'essaie de reproduire l'effet suivant : http://www.amandegelateria.it/ (ou sur ce site https://www.sbs.com.au/margarete/)

    C'est à dire avec la glace, le polaroid et l'image de fond, on a l'impression que les événements se font l'un après l'autre, j'ai regardé le code source et je vois e ngros ceci :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <section id="homepage">
    <div class="drawing">...</div>
    <div class="spoon">...</div>
    <div class="polaroid">...</div>
    </section>

    Au chargement, la class "visible", s'ajoute la balise "section" et du coup les éléments arrivent l'un après l'autre, juste en ajoutant la class visible.

    J'ai tenté de faire la même chose mais mes éléments arrivent en même temps, je ne comprend pas.

    Voici ce que moi j'ai fait en jquery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $('.conteneur_principal').queue(function(next){
    		$(this).addClass('visible');
    		next();
    	});
    D'avance, je vous remercie

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    a titre perso, pour ce genre de chose je code moi-même ce genre de truc à coup de promesses JavaScript => https://developer.mozilla.org/fr/doc..._les_promesses
    surtout que ça s'est simplifié avec les instruction async et await.

    Sinon, il y a aussi une excellente librairie JS pour ça : GSAP.js https://greensock.com/gsap

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Par défaut
    Bonjour,

    Merci pour votre retour, j'ai bien compris le coup des promesses mais cela ne s'applique à mon cas (si je ne veux pas changer le principe) car la seule action qui se produit c'est l'ajout d'une classe "visible" au conteneur principal :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div class="conteneur_principal">
    			<h2 class="text">Le Quiz ou le bullshit est interdit...</h2>
    			<p class="text">Pas facile d'être monsieur/madame parfait ! <br />Bah ouais entre sport ou magnum de rosé au soleil difficile de choisir ! Viens tester à quel point tu es foutu !!</p>
    			<div class="rs_bouton les_boutons">
    				<div class="rs"></div>
    				<a href="#" class="btn_noir">J'me lance...</a>
    			</div>
    	</div>

    et voici les css appliquées quand la classe est ajoutée en jquery :
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    .text{
        opacity: 0;
        transition: all .6s ease-out;
        transition-delay: 0;
        transform: translate(0,0);
    }
     
    .les_boutons{
        opacity: 0;
        transition: all .6s ease-out;
        transition-delay: 0;
        transform: translate(0,-50%);
    }
     
    .conteneur_principal:not(.visible) h2.text {
        transform: translate(0,-50%);
    }
     
    .conteneur_principal:not(.visible) p.text {
        transform: translate(calc(160px - 20%),0);
    }
     
    .conteneur_principal:not(.visible) .les_boutons {
        transform: translate(0,50%);
    }
     
    .visible .text{
        transition-delay: .6s;
        opacity: 1;
    }
     
    .visible .les_boutons{
        transition-delay: .6s;
        opacity: 1;
    }

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Par défaut
    J'ai trouvé par rapport à mon exemple, c'est le transition-delay qui permet d'avoir un léger décalage

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 660
    Billets dans le blog
    1
    Par défaut
    Et avec les callback de animate ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Oui on peut utiliser un callback sur une animation css

    c'est un peu particulier, parce que l'event de retour est différent suivant le navigateur

    pour ma part j'utilise une const dans lesquels je les ai tous(?) mis :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    const DetectAnimationEnding = 'webkitAnimationEnd oAnimationEnd oanimationend msAnimationEnd animationend';

    pour l'utiliser (icic sur un élément #truc) :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      $('#truc').addClass(animClassName);                             //  anim
      $('#truc').one(DetectAnimationEnding, function () {
        $('#truc').css({"background-color":TrucBgColorNeutre});      // changement en fin d'anim
        $('#truc').off(DetectAnimationEnding);
      });

    La pb des call back c'est quand on doit en enchaîner une plusieurs qu'on doit imbriquer les un dans les autres, et ça fait pas très propre,
    et même pénible si on veut y changer l'ordre ou en ajouter une nouvelle à l'intérieur..

    c'est pour ça que j'utilise les promesses, c'est bien plus simple et propre:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
      function Anim_Truc() {
        return new Promise(function (resolve) {
          $('#truc').addClass(animClassNameTruc);                             //  anim
          $('#truc').one(DetectAnimationEnding, function () {
            $('#truc').css({"background-color":TrucBgColorNeutre});      // changement en fin d'anim
            $('#truc').off(DetectAnimationEnding);
            resolve();
          });
        });
      }
     
      async function SequenceTrucBidule() {
        await Anim_Truc();
        await Anim_Bidule();
      }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/10/2016, 06h55
  2. Plusieurs animations Flash à démarrer en même temps
    Par Mangacker dans le forum Flash
    Réponses: 5
    Dernier message: 23/06/2010, 20h26
  3. Charger plusieurs .swf externes dans une animation
    Par samuelvincent dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 22/10/2009, 17h29
  4. 1 SOLUTION : plusieurs anim dans un fichier x
    Par heidi79 dans le forum DirectX
    Réponses: 1
    Dernier message: 28/08/2003, 09h19
  5. Plusieurs animations dans un fichier .X
    Par heidi79 dans le forum DirectX
    Réponses: 6
    Dernier message: 25/08/2003, 02h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo