Zbudowałem dość normalny układ menu submenu w pionowych kolumnach - zagnieżdżonych UL, używając slideToggle
do rozwijania i zwijania podmenu.slideDown gwałtownie skacze pod koniec
Problem, który próbuję rozwiązać, polega na sposobie otwierania podmenu "podskoku" na samym końcu. (Testuję w najnowszej wersji Chrome.) Prawdopodobnie jest to najbardziej zauważalne w drugim podmenu "Korzyści". Nie przeskakuje, gdy menu się zawala, tylko gdy się rozwijają.
Pomyślałem, że problem może mieć coś wspólnego ze stylami :after
dodawanymi tylko wtedy, gdy menu jest w pełni rozwinięte. W szczególności klasa current
jest dodawana do znacznika LI po pełnym rozwinięciu menu. Ale komentowanie kodu, który przełącza tę klasę, wydaje się nie mieć żadnego skutku.
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();
});
});
CSS jest znaczna, a nijaki HTML.
Mogę szczerze powiedzieć, że nigdy bym o tym nie pomyślał. Wielkie dzięki! – Blazemonger
+1, zgadzam się z tą odpowiedzią. Ponadto odkryłem, że jeśli możesz uczynić swój element "float", to również go rozwiązuje. – Sparky
@ Sparky672 Jeśli sprawisz, że będzie unoszący się, element będzie miał szerokość wewnętrznych elementów potomnych. Jeśli wewnętrzne dzieci nie mają ustawionej szerokości, czy nie miałbyś tego samego problemu? http://jsfiddle.net/5gGum/17/ –