The instant a ball hits the ground it widens and flattens (squash); the instant it launches back up it stretches tall and narrow (stretch). The key is volume preservation — if one axis grows, the other must shrink, or it stops reading as a real object. In CSS this is inversely-proportional scaleX/scaleY values across keyframe stops.
Rigid materials (stone, metal) barely squash; soft ones (a rubber ball, a cartoon character) squash a lot — it's also a visual cue for how stiff something is.
When to use
Use it for loading indicators, button-press feedback, or character jumps where you want elasticity to read. Don't overdo it on rigid UI elements like cards and panels.