Установите продолжительность эффекта на основе свойства CSS - PullRequest
2 голосов
/ 18 июня 2011
$('.container').animate({ 'height': el.height()  }, { duration: 300});

Таким образом, высота el может быть меньше или больше высоты .container.

Как сделать так, чтобы продолжительность эффекта продолжалась дольше, когда разница между текущей высотойа тот, на которого я оживляю, больше?

Ответы [ 3 ]

3 голосов
/ 18 июня 2011
var newHeight = el.height(),
    oldHeight = $('.container').height();
$('.container').animate({height: newHeight}, Math.abs(newHeight-oldHeight)*5);

Измените магическую константу 5 на все, что кажется разумным. Вы не предоставили критерии для вычисления продолжительности; Вы можете связать его с Math.min(/*above expression*/, maxDuration), или, возможно, он должен быть не линейным, а логарифмическим. Вы можете настроить его довольно легко. Хотя это хорошее место для начала.

1 голос
/ 18 июня 2011
$('.container').animate({height:el.height()},($(this).height()-el.height()>el.height())?3000:100);
1 голос
/ 18 июня 2011
if ($(.container).height() - $(el).height() > 0)
{
    // Whatever you want to do if the container is higher than el
}
else
{
    // Other case
}

Не уверен, что это правильный синтаксис JS, но он должен работать.

http://api.jquery.com/height/

РЕДАКТИРОВАТЬ: Неважно, посмотрите на ответ Дэвина.

...