motion-offset
. Это и все другие связанные свойства motion- * в спецификации переименовываются в offset- *. Мы меняем имена здесь, в альманахе. Если вы хотите использовать его прямо сейчас, возможно, лучше всего использовать оба синтаксиса.
motion-offset
Свойство в CSS говорит: как далеко вдоль motion-path
вы? Это свойство анимации, связанное с траекториями движения.
.thing-that-moves ( /* "Old" syntax. Available in Blink browsers as of ~October 2015 */ motion-path: path('M 5 5 m -4, 0 a 4,4 0 1,0 8,0 a 4,4 0 1,0 -8,0'); motion-offset: 0%; /* Currently spec'd syntax. Should be in stable Chrome as of ~December 2016 */ offset-path: path('M 5 5 m -4, 0 a 4,4 0 1,0 8,0 a 4,4 0 1,0 -8,0'); offset-distance: 0%; animation: move 3s linear infinite; ) /* Animate the element along the path from 0% to 100% */ @keyframes move ( 100% ( motion-offset: 100%; /* Old */ offset-distance: 100%; /* New */ ) )
В приведенном выше примере мы установили начальное motion-offset
значение равным 0%
, хотя стоит отметить, что ноль является значением по умолчанию, даже если он не определен явно (мы могли бы не указывать это).
Переменные
offset-distance
Свойство принимает следующие значения:
length
percentage
В обоих случаях значение указывает длину расстояния от начальной точки пути (по умолчанию 0px
или 0%
) до конечной точки пути.
Пример
В этом примере у нас есть два круга, в которых один маленький кружок движется по пути большего круга.
Вот файл SVG, который мы используем для рисования фигур:
Теперь мы можем настроить .marker
класс в нашем CSS так, чтобы он следовал .track
координатам класса:
/* The motion-offset is zero by default */ .marker ( offset-path: path('M 5 5 m -4, 0 a 4,4 0 1,0 8,0 a 4,4 0 1,0 -8,0'); animation: move 3s linear infinite; ) @keyframes move ( /* Move the .marker from it's default value of 0% to 100% of the path's length */ 100% ( offset-distance: 100%; ) )
См. «Простой пример анимации вдоль пути с ручкой» от Джеффа Грэма (@geoffgraham) на CodePen.
Точно так же мы можем установить offset-distance
значение 50%, и анимация пропадет на полпути:
См. «Простой пример анимации вдоль пути с ручкой» от Джеффа Грэма (@geoffgraham) на CodePen.
Или, чтобы контролировать скорость анимации, мы могли бы умножить offset-distance
значение на 300%, чтобы ускорить процесс. Однако, если мы указали количество времени, в течение которого анимация выполняется со значением, превышающим время, необходимое элементу для прохождения пути, то движение остановится, пока анимация не завершит свой интервал перед повторением:
См. «Простой пример анимации вдоль пути с ручкой» от Джеффа Грэма (@geoffgraham) на CodePen.
Поддержка браузера
на offset-distance
момент написания этой статьи это свойство все еще считается экспериментальной функцией, и документации о поддержке браузером нет. Однако есть документация по motion-path
поддержке, и мы можем пока использовать ее в качестве основы.
Эти данные о поддержке браузером взяты из Caniuse, где есть более подробная информация. Число означает, что браузер поддерживает эту функцию в этой версии и выше.
Рабочий стол
Хром | Fire Fox | IE | Край | Сафари |
---|---|---|---|---|
46 | 72 | Нет | 79 | Нет |
Мобильный / планшет
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 год | Нет |
Дополнительная информация
- Спецификация модуля пути движения, уровень 1
- Примеры на CodePen
- Билет WebKit № 139128
- Билет Mozilla № 1186329
- Запрос функции Microsoft Edge