Kwisatz
@Kwisatz
Больше web-приложений, хороших и разных

Как временно убрать css transition?

Есть нектий горизонтальный список построенный на UL LI с прокруткой и transition для плавности.

В некий момент необходимо список перестроить и выбрать другой элемент но сделать сие нужно моментально и без анимации. Простое решение - анимация через JS, но очень не хочецо так делать.

UPD: Пример: лента из 5элементов, для пользователя эта лента должна быть бесконечна в любую сторону, но в ней только 5 элементов.
  • Вопрос задан
  • 4454 просмотра
Решения вопроса 2
Ronnie_Gardocki
@Ronnie_Gardocki
Я у мамы фронтендщик.
Мой ответ является расширенной версией ответа Илья Шатохин про добавление класса .no-transition.
И он в общем то полагается на костыль, но не настолько ужасный как setTimeout.
.no-transition {
  transition: none !important;
}

Затем в js пишем нечто подобное
elem.classList.add("no-transition");
var triggerLayout = elem.offsetHeight;
// действия с элементом которые произойдут мгновенно

Суть такова, что работа с DOM в браузере оптимизирована таким образом, что он "группирует" все изменения и потом применяет их одновременно. Но, если в js коде обращаться к свойстам элементов, которые триггерят лэйаут, эти группы будут "дробиться" в этом месте вызова. В итоге вот эта самая строчка "var triggerLayout = elem.offsetHeight;" вызывает триггер лэйаута и операция с элементом происходит уже так, словно к нему добавлен класс без транзишена. Точно таким же образом например анимируются элементы с display: none, которые надо показать с помощью изменения opacity. Вначале вы меняете свойство display, затем триггерите лэйаут, затем добавляете класс изменяющий опасити - у вас происходит анимация. Без триггера элемент просто моментально появится.
Таблицу css триггеров можно найти тут - csstriggers.com
+ вот тут еще пишут про это gent.ilcore.com/2011/03/how-not-to-trigger-layout-...
Сам по себе лэйаут нужно триггерить только тогда, когда это является лучшим способом реализации анимации, ибо это влияет на производительность. На эту тему (и многие другие вещи) вам сюда - https://developers.google.com/web/fundamentals/per...
Ответ написан
Kwisatz
@Kwisatz Автор вопроса
Больше web-приложений, хороших и разных
А знаете... да шут с ним, пусть будет бесконечное смещение.
jsfiddle.net/k2yxjyg7
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы