J'essaye d'animer une liste extensible, mais j'ai du mal à afficher correctement la liste. Sans liste d'effets d'animation s'affiche correctement (expand/collapse). Pour réduire la liste J'utilise ul.style.visibility = "hidden"; ul.style.height = "0px";
. Sans effet d'animation, indiquez si cela vous convient:Animation de liste non ordonnée extensible, problème de rendu
.
Les bordures noires sont sur l'élément UL. J'utilise code Javascript suivant pour développer la liste:
var from = 0; //The height
ul.style.height = "auto"; //set height to auto to get actual height
var to = ul.offsetHeight; //get height
ul.style.height = "0px";
ul.style.visibility = "visible";
ul.style.overflow = "hidden";
var start = new Date().getTime(),
timer = setInterval(function() {
var step = Math.min(1,(new Date().getTime()-start)/400);
ul.style.height = (from+step*(to-from))+"px";
if(step == 1) clearInterval(timer);
},20);
//Expand List
ul.style.overflow = "inherit";
ul.style.height = "auto";
ul.style.visibility = "inherit";
ul
dans le code est fait référence aux ul
éléments dans la liste non ordonnée en cours d'extension.
Mais après avoir utilisé ce code pour animer le comportement d'expansion, la largeur de l'élément externe ul
ne change pas avec l'expansion de l'élément interne . Cependant l'animation fonctionne très bien, mais la liste est à la recherche comme ceci:
Quand je commenter //ul.style.height = (from+step*(to-from))+"px";
de setInterval
, la liste est affichée correctement (mais pas d'effet d'animation).
Pouvez-vous s'il vous plaît signaler une erreur, pourquoi ne pas la largeur de ul
externe changeant avec expansion des intérieure ul
Avez-vous vérifié le débogueur pour voir quelle est la valeur de ul.offsetHeight? Je suppose que c'est zéro ou au moins, pas ce que vous attendez, ce qui explique pourquoi il ne fonctionne pas correctement. Essayez de remplacer var 'to = ul.offsetHeight;' par 'var to = 100;', juste pour voir si cela fonctionne. – Craig
@Craig Vérifié, "ul.offsetHeight;" renvoie la valeur correcte. –