Я создал быстрый тест, чтобы показать, что я пытаюсь сделать:
http://jsfiddle.net/zY3HH/
Если вы нажмете кнопку «Переключить ширину» один раз, квадрат получитсяодна секунда, чтобы вырасти до полной ширины.Нажмите его еще раз, и потребуется одна секунда, чтобы сузиться до нулевой ширины.
Однако дважды нажмите кнопку «Переключить ширину» в быстрой последовательности - во второй раз, когда квадрат вырос до небольшой долиобщей ширины (например, 10%) - вы заметите, что анимация все еще занимает целую секунду, чтобы вернуть квадрат в нулевую ширину, что выглядит неловко, IMO.
Хотя такое поведение ожидается, я 'Мне бы хотелось, чтобы последняя анимация происходила за промежуток времени, пропорциональный ширине, которую она покрывает.Другими словами, если вы нажмете «Переключить ширину» во второй раз, когда квадрат будет на 10% от его общей ширины, я бы хотел, чтобы ему понадобилось около 1/10 секунды, чтобы вернуться к нулевой ширине.
Должно быть относительно легко (я думаю) сделать значение свойства duration
динамическим, вычисляемым при запуске обработчика jQuery click
, чтобы измерить текущую ширину квадрата и соответственно определить продолжительность.
Тем не менее, мне не хватает лучшего способа сделать это?Предоставляет ли jQuery простой способ или предоставляет какой-либо метод или свойство, чтобы сделать это проще?