Il est également possible d'éviter l'utilisation de JavaScript pour l'effet de liste déroulante et d'utiliser une transition CSS3, en ajoutant ce petit bout de code à votre style :
.dropdown .dropdown-menu {
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
-ms-transition: all 0.3s;
-o-transition: all 0.3s;
transition: all 0.3s;
max-height: 0;
display: block;
overflow: hidden;
opacity: 0;
}
.dropdown.open .dropdown-menu { /* For Bootstrap 4, use .dropdown.show instead of .dropdown.open */
max-height: 300px;
opacity: 1;
}
Le seul problème de cette méthode est que vous devez spécifier manuellement la hauteur maximale. Si vous définissez une valeur très élevée, votre animation sera très rapide.
Cela fonctionne à merveille si vous connaissez la hauteur approximative de vos listes déroulantes, sinon vous pouvez toujours utiliser le javascript pour définir une valeur précise de hauteur maximale.
Voici un petit exemple : DEMO
! Il y a un petit bug avec le padding dans cette solution, vérifiez le commentaire de Jacob Stamm avec la solution.