Я заметил, что с ngAnimate
загруженными переходами CSS «дергаются» в Chrome, когда они прерываются другим переходом. То есть они как бы переходят к целевому состоянию, а не начинают с текущего значения. Точно такие же переходы намного более плавные без загруженного ngAnimate и более плавные в Firefox с/без ngAnimate.
Например, простой элемент, который добавляет/удаляет класс по клику:
<bigger-on-click-class class="{{showBigger ? 'bigger' : ''}}" ng-click="showBigger = !showBigger"></bigger-on-click-class>
анимированные переходом CSS:
bigger-on-click-class {
display: block;
height: 200px;
width: 200px;
background: red;
-webkit-transition: height 5s;
transition: height 5s;
}
bigger-on-click-class.bigger {
height: 400px;
}
ведет себя по-разному при нескольких щелчках в быстрой последовательности, в зависимости от того, загружен ли ngAnimate
:
http://plnkr.co/edit/Fhwbd3WRiz5wHRIm10y3?p=preview без ngAnimate
http://plnkr.co/edit/WSED064MV2dtPnsEQuti?p=preview с ngAnimate
Если вы попробуете несколько раз быстро щелкнуть красные поля в предыдущих примерах, вы поймете, что я имею в виду, или щелкните ниже, чтобы просмотреть скринкаст.
Есть ли способ избежать этого, кроме как не загружать ngAnimate
, чтобы прерывание анимации начиналось с текущего отображаемого значения/позиции?
Изменить: первоначальные ссылки были неверными. Также дерганое поведение наблюдается в Chrome, но не в Firefox. Изменить: переформулировал вопрос, чтобы было понятнее разница между Chrome и Firefox.