在 CSS 动画中停止摇晃

Stop shaking in CSS animation

所以我现在正在制作一个井字游戏,我正在尝试添加一个动画来显示谁赢了。当玩家通过获得 3 个水平的东西获胜时,动画效果完美,但当他们垂直获胜时,动画会轻微晃动。有什么方法可以删除它吗?

这是该行的 CSS:

@keyframes grow-left {
    0% {
        width: 0;
    }

    100% {
        width: 1;
    }
}

.winLine {
    position: absolute;
    width: 300%;
    height: var(--borderThickness);
    background-color: var(--textColor);
    border-radius: 1rem;
    transform-origin: center;
    z-index: 2;
    animation: grow-left 1s ease-in-out 0s;
    opacity: 1;
}

要查看该网站并了解我在说什么,它会在 GitHub 直播 link https://bartycoding.github.io/Tic-tac-toe/

尝试创建另一个 div 来增加高度而不是使用变换:rotate(90deg);

你可以试试 transform: scale():

@keyframes grow-left {
    0% {
        transform: scale(0,1);
    }

    100% {
        transform: scale(1,1);
    }
}

我实际上通过将旋转作为全局 css 变量然后从 javascript 更改该变量来解决此问题,因此 css 看起来像这样:

@keyframes grow-left {
    0% {
        transform: rotate(var(--winLineRotation)) scaleX(0);
    }

    100% {
        transform: rotate(var(--winLineRotation)) scaleX(100%);
    }
}

.winLine {
    position: absolute;
    width: 300%;
    height: var(--borderThickness);
    background-color: var(--textColor);
    border-radius: 1rem;
    transform-origin: center;
    z-index: 2;
    animation: grow-left 1s ease-in-out 0s;
    opacity: 1;
    transform: rotate(var(--winLineRotation));
}