JQuery .slideDown () glisse vers le haut

Cela fonctionne mais je ne sais pas pourquoi. Dans la function capIn() , la ligne $botcap.slideDown("slow") devrait faire glisser la division vers le bas. Ça glisse vers le haut. Si j’essaie d’utiliser .slideUp() rien ne se passe comme s’il essayait de le glisser vers le bas. Quelqu’un peut-il m’expliquer cela?

 $(".slide").hover(capIn, capOut); function capIn(){ //slide top caption down var $topcap = $(this).children(".topcap"); $topcap.slideDown("slow"); //slide bottom caption up //!! Why does slideDown slide caption up here? var $botcap = $(this).children(".botcap"); $botcap.slideDown("slow") } function capOut(){ //slide top back up var $topcap = $(this).children(".topcap"); $topcap.slideUp("slow"); //slide bottom back down var $botcap = $(this).children(".botcap"); $botcap.slideUp("slow"); } 

Les fonctions slideDown et slideUp de jQuery sont en réalité des slideDown slideUp . Comme le dit la documentation de slideUp :

Masquer les éléments correspondants d’un mouvement coulissant.

Le masquage est obtenu en modifiant la hauteur de l’élément. normalement, cela signifie que le bord inférieur de l’élément semble glisser vers le haut, d’où son nom. Cependant, si l’élément est ancré au bas (par exemple, en définissant position: absolute et bottom: 0 ), la modification de hauteur fera apparaître le bord supérieur vers le bas.

Une solution possible serait d’envelopper les éléments $('.botcap') avec un conteneur et d’aligner le conteneur au bas.

Ceci est dû au positionnement de l’élément avec la position absolue et inférieure: 0; Cela traitera réellement l’élément comme s’il était basé sur le fond, donc son slideDown () va vers le haut. Il peut être corrigé en utilisant top: (height of element) au lieu de bottom: 0.