Мой эксперимент jQuery slideToggle()
Кто-нибудь может сказать мне, почему мои ящики "прыгают", когда я их открываю? Первая половина они скользят, остальные они "прыгают"??
Спасибо, Йоханнес
 Мой эксперимент jQuery slideToggle()
Кто-нибудь может сказать мне, почему мои ящики "прыгают", когда я их открываю? Первая половина они скользят, остальные они "прыгают"??
Спасибо, Йоханнес
Это простое исправление. Добавьте это правило CSS в таблицу стилей (протестировано в Firebug для работы, и из моего прошлого опыта с этой проблемой это исправление):
ol.message_list { position: relative }
Это ошибка CSS, а не ошибка jQuery как таковая.
Что мне помогает
overflow: hidden
к этому переключателю...
Самое быстрое исправление в вашем случае:
.message_container { width: 361px; }
Я не уверен, почему именно, но не давая контейнеру фиксированную ширину при содержащем <p>, вызывает проблемы, давая ей одно, а неустойчивость уходит.
css padding и jquery slideToggle не работают хорошо. Попытайтесь заполнить пробел.
Я нашел эту проблему во многих случаях, когда я анимации только высоты с slideToggle, но не поля/дополнения.
Итак, что-то вроде этого может решить:
$("#thediv").slideToggle().animate({"margin-bottom": "toggle"});
		Если установлено, свойство min-height также может вызвать такой сбой. В этом случае вам нужно reset it:
.toggle-container {
position: relative;
min-height: 0;
}
		Случайно я считаю, что самым простым в использовании решением является добавление пользовательской функции в jQuery с анимированным дополнением /margin -top/bottom тоже.
//this function is to avoid slideToggle jQuery jump bug.
$.fn.slideShow = function(time,easing) { return $(this).animate({height:'show','margin-top':'show','margin-bottom':'show','padding-top':'show','padding-bottom':'show',opacity:1},time,easing); }
$.fn.slideHide = function(time,easing) {return $(this).animate({height:'hide','margin-top':'hide','margin-bottom':'hide','padding-top':'hide','padding-bottom':'hide',opacity:0},time,easing);  }
И пример использования:
$(this).slideShow(320,'easeOutQuart');
$(this).slideHide(320,'easeOutQuart');
Мой пример анимированной opacity toggle tu, вы можете изменить его по мере необходимости.
Я считаю, что самое простое исправление обычно заключается в удалении прокладки из элемента, который скользит, и добавляет дополнение к элементу внутри скользящего элемента.
В этом примере div с атрибутом data-role="content" является та, которая слайдов, а дополнение применяется к tab-example__content
<div data-role="content" class="tab-example__content">
    ...
</div>
Чтобы исправить "отрывистое" скольжение, я добавил новый div внутри скользящего элемента и переместил класс/дополнение к такому:
<div data-role="content">
    <div class="tab-example__content">
        ...
    </div>
</div>
Теперь он приятный и гладкий
 Я нашел еще одну вещь, которая влияет на это. Удаление min-height из CSS этого элемента исправило это для меня.
если у переключенного блока по умолчанию нет высоты, вам нужно добавить его, для автоматической высоты добавьте следующее:
.toggle-container {
 height: auto;
}
		Я обнаружил, что установка ширины в переключаемом контейнере решила проблему для меня
.toggle-container { 
   width: 100%; }
}
 Я читаю, что slideToggle полагается на начальную ширину и высоту для правильного функционирования, поэтому в зависимости от вашей страницы вам может потребоваться установить ширину или высоту, чтобы получить ожидаемое поведение.
 В моей прошлой ситуации у меня была та же проблема, и проблема была в том, что у меня был transition: all 350ms; объявление в моем CSS, который конфликтовал с .slideToggle. Удаление это исправило для меня, так что ищите переходы в CSS.
 Я не знаю, является ли это все еще проблемой, но что исправило это для меня, было то, что я ранее использовал CSS, чтобы "оживить" это, таким образом, у меня был эффект transition на элемент. Удаление это исправило это для меня.