Установите длительность эффекта на основе свойства CSS
$('.container').animate({ 'height': el.height() }, { duration: 300});
Так el
высота может быть меньше или больше .container
высота
Как я могу сделать так, чтобы продолжительность эффекта длилась дольше, когда разница между текущей высотой и той, на которую я анимирую, больше?
3 ответа
Решение
var newHeight = el.height(),
oldHeight = $('.container').height();
$('.container').animate({height: newHeight}, Math.abs(newHeight-oldHeight)*5);
Изменить магическую константу 5
ко всему, что кажется разумным. Вы не предоставили критерии для вычисления продолжительности; вы можете связать это с Math.min(/*above expression*/, maxDuration)
или, может быть, он должен быть не линейным, а логарифмическим. Вы можете настроить его довольно легко. Хотя это хорошее место для начала.
$('.container').animate({height:el.height()},($(this).height()-el.height()>el.height())?3000:100);
if ($(.container).height() - $(el).height() > 0)
{
// Whatever you want to do if the container is higher than el
}
else
{
// Other case
}
Не уверен, что это правильный синтаксис JS, но он должен работать.
РЕДАКТИРОВАТЬ: Неважно, посмотрите на ответ Дэвина.