Animation d'un tri

Résolu/Fermé
Lic90 Messages postés 21 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 15 août 2015 - Modifié par Strumpfette le 29/05/2015 à 13:38
Lic90 Messages postés 21 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 15 août 2015 - 28 mai 2015 à 16:45
Bonjour,
Dans le cadre de mes études je dois réaliser la même animation que dans le plugin MixItUp https://www.kunkalabs.com/mixitup/

J'ai fait tous les tris et filtres nécessaire seulement ça se passe trop vite et il faudrait que les blocs se déplacent comme dans le plugin.

J'ai vu qu'ils utilisaient un transform: translate pour obtenir cet effet. Le problème c'est que je ne parviens pas à l'intégrer dans mes fonctions de tri.

Voici le code html :
<div id="SandBox" class="sandbox">
<div class="mix category-1" data-value="7">7</div>
<div class="mix category-2" data-value="9">9</div>
<div class="mix category-1" data-value="4" >4</div>
<div class="mix category-2" data-value="6">6</div>
<div class="mix category-1" data-value="10">10</div>
<div class="mix category-1" data-value="2">2</div>
<div class="mix category-2" data-value="8">8</div>
<div class="mix category-2" data-value="3">3</div>
<div class="mix category-1" data-value="1">1</div>
<div class="mix category-2" data-value="11">11</div>
<div class="mix category-2" data-value="5">5</div>
<div class="mix category-2" data-value="12">12</div>
</div>


Et voici ma fonction pour effectuer un tri croissant :

$("#croissant").click(function(){
$('#SandBox').children().sort(function(a, b) {
var tri = +a.getAttribute('data-value') - +b.getAttribute('data-value');
return tri;
}).css("marginLeft","1.5%").appendTo($('#SandBox'));
});

Pourriez-vous m'aider svp. Vous êtes mon dernier espoir.
Merci d'avance.

EDIT: Ajout de la coloration syntaxique.

2 réponses

prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
27 mai 2015 à 19:21
Stop SPAM stp... go sur ton autre topic et on en discute
0
Lic90 Messages postés 21 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 15 août 2015
27 mai 2015 à 19:26
Désolée, je m'étais trompée de pseudo et j'ai dû recommencer, ce n'est pas un spam. L'autre message a été supprimé.

Je voulais vous remercier de votre réponse aussi rapide.

C'est magnifique ce que vous avez obtenu comme résultat, c'est exactement ça que je cherche à faire.

Malheureusement j'ai du mal à comprendre votre code car je débute à peine. N'aurait-il pas moyen de intégrer une animation similaire dans mon code pour ne pas avoir à tout recommencer et aussi ne pas passer par un objet littéral ?

Je vous remercie de votre compréhension.
0
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
27 mai 2015 à 19:33
Je suis en train de regarder ton code, je reviens vers toi au plus vite.
0
Lic90 Messages postés 21 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 15 août 2015
27 mai 2015 à 19:42
Personne pour m'aider ? Svp c'est pour un examen :-(
0
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
27 mai 2015 à 19:50
Le problème de ton code est le suivant:

Tu réordonne les enfants de sandbox, puis tu fais un appendTo pour les repositionner correctement dans le DOM. En faisant ça, tu supprime l'élément pour le recréer à la bonne place. Le navigateur n'arrive donc pas à faire une transition entre ces deux positions puisque l'élément DOM n'est plus le même.
0
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
27 mai 2015 à 19:50
MixItUp a trouvé une bonne façon de le faire, l'as tu comprise ?
0
Lic90 Messages postés 21 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 15 août 2015 > prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020
27 mai 2015 à 19:57
En fait, en classe on nous avait expliqué de faire un appendTo() juste après le tri avec sort(). Du coup je ne sais pas à quel moment ni comment intégrer un transform: translate pour que ce soit plus fluide.

MixItUp fait ça autrement ?
0
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
27 mai 2015 à 20:00
MixUp calcule la position a laquelle chaque élément doit être re-placé, effectue le transform, et une fois l'animation terminée il fait le appendTo.
0
Lic90 Messages postés 21 Date d'inscription mercredi 27 mai 2015 Statut Membre Dernière intervention 15 août 2015
27 mai 2015 à 20:07
J'avais pensé à récupérer les positions comme ça:

$("#SandBox div").each(function(){
var x = $(this).position();
var positionLeft= x.left;
var positionTop = x.top;
});
Mais je ne sais pas comment exploiter ces positions dans un transform: translate qui s'appliquerait à tous les div.
0