2012-04-29 4 views
0

J'ai créé un menu d'accordéon qui remplace le contrôle de sélection de formulaire, et je souhaite utiliser les transitions css3 pour qu'il se dilate/se contracte facilement.
Voici un lien vers la jsFiddle: http://jsfiddle.net/hKsCD/4/css3 menu d'accordéon de transition

Pour obtenir l'effet désiré que je dois animer la hauteur de chacun des liens, mais je ne suis pas sûr de savoir comment faire. Les transitions CSS3 sont déroutantes. O_o

Répondre

1
.accordion { 
    height: 20px; /*define height to start from*/ 
    transition: height 2s; 
    -moz-transition: height 2s; /* Firefox 4 */ 
    -webkit-transition: height 2s; /* Safari and Chrome */ 
    -o-transition: height 2s; /* Opera */ 
} 
.accordion.expanded { 
    height: 400px;/*desired height when expanded*/ 
} 

vous devez être prudent mais quand la hauteur varie d'un élément à l'autre, vous devez utiliser une solution de contournement maximum de largeur dans ces cas comme « height: auto » ne fonctionnera pas.

par exemple. remplacez height dans l'exemple ci-dessus par max-height et dans l'état étendu max-height à quelque chose que l'élément n'atteindra jamais (pas trop élevé cependant, car la vitesse d'animation est calculée par rapport à la hauteur à animer -> une largeur maximale qui est trop high (par exemple 9999px) donne une animation si rapide que vous ne la remarquez pas)

+0

Chacun des accordéons aura un nombre différent d'options, et donc des hauteurs différentes. J'ai essayé d'utiliser max-height, mais cela ne fonctionne pas car lorsque la classe développée est supprimée, toutes les options ( éléments) disparaissent instantanément. La transition doit être appliquée à toutes les options et non au menu lui-même. J'ai essayé d'appliquer une transition en hauteur sur les options, mais ce n'est pas animé. Voici ma tentative: http://jsfiddle.net/hKsCD/5/ – Ruby

+1

Après avoir joué avec un peu plus, je l'ai compris. Il a juste besoin d'un peu de vernis. http://jsfiddle.net/hKsCD/6/ Merci pour votre aide. – Ruby