Анимация: свойство startTime
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с марта 2020 года.
Свойство Animation.startTime интерфейса Animation представляет собой значение с двойной точностью, которое указывает запланированное время начала воспроизведения анимации.
Время начала анимации — это значение времени в её timeline, когда планируется начать воспроизведение целевого KeyframeEffect. Время начала анимации изначально не определено (означает, что оно null потому что у него нет значения).
Значение
Число с плавающей точкой, представляющее текущее время в миллисекундах, или null если время не задано. Вы можете прочитать это значение, чтобы определить текущее установленное время начала, и изменить это значение, чтобы анимация начала воспроизведение в другое время.
Примеры
В примере Работа с API веб-анимаций, мы можем синхронизировать все новые анимированные котов, задав им одинаковое startTime как у оригинального бегущего кота:
const catRunning = document
.getElementById("withWAAPI")
.animate(keyframes, timing);
/* A function that makes new cats. */
function addCat() {
const newCat = document.createElement("div");
newCat.classList.add("cat");
return newCat;
}
/* This is the function that adds a cat to the WAAPI column */
function animateNewCatWithWAAPI() {
// make a new cat
const newCat = addCat();
// animate said cat with the WAAPI's "animate" function
const newAnimationPlayer = newCat.animate(keyframes, timing);
// set the animation's start time to be the same as the original .cat#withWAAPI
newAnimationPlayer.startTime = catRunning.startTime;
// Add the cat to the pile.
WAAPICats.appendChild(newCat);
}
Пониженная точность времени
Для защиты от атак на тайминг и отпечатков пальцев, точность animation.startTime может быть округлена в зависимости от настроек браузера. В Firefox, предпочтение privacy.reduceTimerPrecision включено по умолчанию и по умолчанию равно 2 мс. Вы также можете включить privacy.resistFingerprinting, в этом случае точность будет 100 мс или значение privacy.resistFingerprinting.reduceTimerPrecision.microseconds, что больше.
Например, при пониженной точности времени, результат animation.startTime всегда будет кратен 0,002 или кратен 0,1 (или privacy.resistFingerprinting.reduceTimerPrecision.microseconds) с включенным privacy.resistFingerprinting.
// reduced time precision (2ms) in Firefox 60 animation.startTime; // Might be: // 23.404 // 24.192 // 25.514 // … // reduced time precision with `privacy.resistFingerprinting` enabled animation.startTime; // Might be: // 49.8 // 50.6 // 51.7 // …
Спецификации
| Спецификация |
|---|
| Веб-анимации # dom-animation-starttime |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
startTime |
75 | 79 | 48 | 62 | 13.1 | 75 | 48 | 54 | 13.4 | 11.0 | 75 |
См. также
- API веб-анимаций
Animation-
Animation.currentTimeдля текущего времени анимации.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Animation/startTime