Solution 1 :

You are missing the transform: property in your shakeComputer animation.

const playerHand = document.querySelector(".player-hand");
const computerHand = document.querySelector(".computer-hand");

playerHand.style.animation = "shakePlayer 1.5s ease";
computerHand.style.animation = "shakeComputer 1.5s ease";
@keyframes shakeComputer{
    0%{
        transform: translateY(0px);
    }
    15%{
        transform: translateY(-50px);
    }
    30%{
        transform: translateY(0px);
    }
    45%{
        transform: translateY(-50px);
    }
    60%{
        transform: translateY(0px);
    }
    75%{
        transform: translateY(-50px);
    }
    100%{
        transform: translateY(0px);
    }
    85%{
        transform: translateY(-50px);
    }
}

@keyframes shakePlayer {
    0%{
        transform: rotateY(180deg) translateY(0px);
    }
    15%{
        transform: rotateY(180deg) translateY(-50px);
    }
    30%{
        transform: rotateY(180deg) translateY(0px);
    }
    45%{
        transform: rotateY(180deg) translateY(-50px);
    }
    60%{
        transform: rotateY(180deg) translateY(0px);
    }
    75%{
        transform: rotateY(180deg) translateY(-50px);
    }
    100%{
        transform: rotateY(180deg) translateY(0px);
    }
    85%{
        transform: rotateY(180deg) translateY(-50px);
    }
}

div {
    width: 200px;
    height: 200px;
    display: inline-block;
    border: 1px solid red;
}

.player-hand::before { content: ".player-hand" }
.computer-hand::before { content: ".computer-hand" }
<div class="player-hand"></div>
<div class="computer-hand"></div>

Problem :

Here is how I call the animation:

playerHand.style.animation = "shakePlayer 1.5s ease";
computerHand.style.animation = "shakeComputer 1.5s ease";

The animation CSS:

@keyframes shakeComputer{
    0%{
        translateY(0px);
    }
    15%{
        translateY(-50px);
    }
    30%{
        translateY(0px);
    }
    45%{
        translateY(-50px);
    }
    60%{
        translateY(0px);
    }
    75%{
        translateY(-50px);
    }
    100%{
        translateY(0px);
    }
    85%{
        translateY(-50px);
    }
}

@keyframes shakePlayer {
    0%{
        transform: rotateY(180deg) translateY(0px);
    }
    15%{
        transform: rotateY(180deg) translateY(-50px);
    }
    30%{
        transform: rotateY(180deg) translateY(0px);
    }
    45%{
        transform: rotateY(180deg) translateY(-50px);
    }
    60%{
        transform: rotateY(180deg) translateY(0px);
    }
    75%{
        transform: rotateY(180deg) translateY(-50px);
    }
    100%{
        transform: rotateY(180deg) translateY(0px);
    }
    85%{
        transform: rotateY(180deg) translateY(-50px);
    }
}

My JS variables:

const playerHand = document.querySelector(".player-hand");
const computerHand = document.querySelector(".computer-hand");

I can’t find where the problem is and why the right-hand does not play the animation. If anyone can help me I’d be grateful.

By