how to make an element in html shake using js
// HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="./main.css">
    <title>3d Vector Kata</title>
</head>
<body>
    <form id="test-form">
        <input type="text" id="test-input">
        <button type="submit" id="submit-button">Submit</button>
    </form>
    <script src="./index.js"></script>
</body>
</html>
// CSS
/* Standard syntax */
@keyframes shake {
  10%, 90% {
    transform: translate3d(-1px, 0, 0);
  }
  20%, 80% {
    transform: translate3d(2px, 0, 0);
  }
  30%, 50%, 70% {
    transform: translate3d(-4px, 0, 0);
  }
  40%, 60% {
    transform: translate3d(4px, 0, 0);
  }
}
.apply-shake {
    animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both;
}
// JAVASCRIPT
const input = document.querySelector("input#test-input");
const submit = document.querySelector("button#submit-button");
submit.addEventListener("click", (e) => {
    e.preventDefault();
    if(input.value === "") {
        input.classList.add("apply-shake");
    }
});
input.addEventListener("animationend", (e) => {
    input.classList.remove("apply-shake");
});