Краткий ответ: CSS.
Более длинный ответ: Когда вызывается функция перехода, она возвращает объект с объектом перехода, который должен включать метод css
, метод tick
или оба. Метод tick
является простым - он вызывается каждый кадр (по существу, используя requestAnimationFrame
) до завершения перехода, что позволяет вам делать вещи, которые невозможны только с помощью CSS, например эффект пишущей машинки .
Метод css
работает по-другому. Допустим, у вас есть простой переход с постепенным исчезновением, который возвращает такую функцию:
css: t => `opacity: ${t}`
(Это почти в точности то, что делает встроенный переход затухания .) Эта функция будет вызываться несколько раз с другим значением t
до начала перехода - количество раз зависит от продолжительности перехода - поэтому генерируется набор ключевых кадров:
keyframes = [
'0% { opacity: 0 }',
'10% { opacity: 0.1 }',
'20% { opacity: 0.2 }',
// ...
];
Эти ключевые кадры затем объединяются в CSS-анимацию и применяются к элементу.
В этом простом примере это может показаться чрезмерно сложным - в конце концов, мы можем просто перейти с 0% { opacity: 0 }
на 100% { opacity: 1 }
. Но это дает нам возможность создавать пользовательских переходов с функциями ослабления, которые обычно не доступны в CSS-анимациях, и все это без обращения к манипулированию стилями в JavaScript (что должно происходить в главном потоке, создавая общий источник). рывка.)