动画元素的意外行为

Unexpected behaviour of animated elements

这是我的动画 Codepen5。 如您所见,项目数组中最后一个元素的 "entering" 动画有问题。

几乎相同的代码对四个元素运行良好 - Codepen4。在我向菜单添加了一项并遵循代码以在小于 1300 像素的屏幕上重新组织展开的项目后出现问题;

if (winsize < 1600) {
    if (i === 0) {
        $(this.items[i]).css('transform', `translate(${ winsize/2 - 1.5*grow}px, 170px)`)
    }
    if(i === this.items.length - 1) {
        $(this.items[i]).css('transform', `translate(${ -1*(winsize/2 - 1.5*grow)}px, 170px)`)
    }
}

(第 43 - 51 行)

也对第 31 行进行了更改:const quarter = winsize / 4; 改为

const quarter = winsize / 5;

如果有任何关于问题的想法,我们将不胜感激。

我认为当您在开始动画后通过平移改变位置时会出现故障。 所以.. 最好使用 TweenMax.to 函数在 之前更改 topPos 和 leftPos 值

而不是这个

        //move blue and purple to the second row
            if (winsize < 1600) {
                if (i === 0) {
                    $(this.items[i]).css('transform', `translate(${ winsize/2 - 1.5*grow}px, 170px)`)
                }
                if(i === this.items.length - 1) {

                $(this.items[i]).css('transform', `translate(${ -1*(winsize/2 - 1.5*grow)}px, 170px)`)
                }
            }
        }

改变 topPos 和 leftPos before TweenMax.to

           //move blue and purple to the second row
            if (winsize < 1600) {
                if(i === 0) {
                  topPos = topPos + 170;
                  rightPos = rightPos - (winsize/2 - 1.5*grow);
                }
                if(i === this.items.length - 1) {
                  topPos = topPos + 170;
                  rightPos = rightPos + (winsize/2 - 1.5*grow)
                }
            }