1. Bouncing ball
Two states (top and bottom) plus cubic-bezier timing functions to fake gravity. The squash at the bottom is what sells it — try setting scaleY to 1 and watch the magic die.
.ball { width: 60px; height: 60px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, #ff8aa8, #ff5e8a 70%, #c0376a); animation: bounce 1.4s cubic-bezier(.5,.05,.5,.95) infinite; } @keyframes bounce { 0%, 100% { transform: translateY(-60px); } 50% { transform: translateY(60px) scaleY(.9) scaleX(1.1); } }