He construido una disposición de menú-submenú bastante normal en una columna vertical - UL anidados, usando slideToggle
para expandir y colapsar submenús.slideDown salta abruptamente al final
El problema que estoy tratando de resolver está en la forma en que los submenús "saltan" al final. (Estoy probando en la última versión de Chrome). Probablemente sea más notorio en el segundo submenú, "Beneficios". No salta cuando los menús se colapsan, solo cuando se están expandiendo.
Pensé que el problema podría tener algo que ver con los estilos :after
que se agregan solo cuando el menú está completamente expandido. Específicamente, la clase current
se agrega a la etiqueta LI una vez que el menú está completamente expandido. Pero comentar el código que alterna esa clase parece no tener ningún efecto.
http://jsfiddle.net/mblase75/5gGum/
JS:
$(document).ready(function() {
$('#group-subnav > ul > li > a').on('click', function(e) {
e.preventDefault();
var $li = $(this).closest('li');
$li.find('ul').slideToggle('', function() {
$li.toggleClass('current')
}).end().siblings().find('ul').slideUp('', function() {
$li.siblings().removeClass('current')
}).end();
});
});
El CSS es considerable, y el código HTML sin complicaciones.
Bueno, puedo decir honestamente que nunca lo hubiera pensado. ¡Muchas gracias! – Blazemonger
+1, estoy de acuerdo con esta respuesta. Además, he descubierto que si puedes hacer que tu elemento sea 'flotado ', eso también lo resuelve. – Sparky
@ Sparky672 Si lo haces flotar, el elemento tendrá el ancho de sus niños internos. Si los niños internos no tienen un ancho establecido, ¿no tendrías el mismo problema? http://jsfiddle.net/5gGum/17/ –