В вашем собственном коде я избавился от «прыжка», сделав небольшое изменение в CSS и указав высоту тегов p в аккордеоне.
Поскольку вы скрываете их все с помощью скрипта,прежде чем сделать:
$(".accordion p:not(:first)").hide();
возможно, вы могли бы пройтись и получить рассчитанную высоту каждой фигуры и добавить ее к стилю каждого предмета, тем самым устраняя тот «рывок», который вы получите в конце.
Что-то вроде этого:
$('.accordion p').each(function(index) {
$(this).css('height', $(this).height());
});
Редактировать
Я скачал копию вашей страницы и проверил это, и, кажется, он отлично работает в нескольких быстрых тестах браузера,Итак, вот ваш пересмотренный respvid.js:
$(document).ready(function(){
$('.accordion p').each(function(index) {
$(this).css('height', $(this).height());
});
$(".accordion h3:first").addClass("active");
$(".accordion p:not(:first)").hide();
$(".accordion h3").click(function(){
$(this).next("p").slideToggle("slow")
.siblings("p:visible").slideUp("slow");
$(this).toggleClass("active");
$(this).siblings("h3").removeClass("active");
});
});
TL; DR - устанавливая явную высоту на каждой «открывающей» части аккордеона, он удаляет анимацию рывков.поэтому мы устанавливаем эти высоты с помощью скрипта.