Что я хочу сделать, так это анимировать 2 летящих корабля, один слева, другой справа, и они останавливаются примерно на 75% страницы каждая.
Проблема в том, что использование x/translateX в движении кадра, использование любых типов единиц вообще добавит горизонтальное переполнение. Если вы анимируете справа, они расширяют область просмотра, а когда они летят влево, они снова сжимают ее. Если вы анимируете слева, изначально область просмотра не увеличится, но когда вы добавите любое значение любого типа, используя любой тип единицы измерения в анимационной опоре, затем будет добавлено горизонтальное переполнение, которое увеличит его на величину расстояния. путешествовал.
Я попытался обернуть компонент в дополнительную оболочку и добавил overflow-x: скрыто, однако это просто создает еще одну проблему.
Я могу заставить корабль лететь из правая часть вот так:
Код: Выделить всё
initial={{ x: '100%' }} whileInView={{ x: '12vw' }}
Однако теперь возникает проблема с кораблем, идущим слева, скажем, я установил
Код: Выделить всё
initial={{ x: '-100%' }} whileInView={{ x: '80vw' }}
У меня также есть специальный крючок, который обновляет изменения области просмотра, поэтому я попытался использовать это и множитель, чтобы установить положение whileInView, но он не учитывает дополнительную ширину, и поэтому мне снова приходится использовать значения множителя, такие как 0,1-0,2, и я застрял с тем же проблема.
Меня бы удовлетворило то, что один расположен слева, другой справа с начальной непрозрачностью 0, а затем они появляются и перемещаются по экрану мимо друг друга. Но любая комбинация начальных значений X и значений анимации X, которые я пробовал, немедленно дает переполнение X, что затем вызывает все вышеперечисленные проблемы, поскольку становится невозможным позиционировать правый корабль, если я не напишу много медиа-запросов, которые кажется излишним для простой анимации.
Я объяснил это в приведенном выше утверждении.
Подробнее здесь: https://stackoverflow.com/questions/783 ... without-ov