Frame selection
The visible element acts as a window onto the sprite sheet. Across the animation's keyframes, its background position shifts through the frame cells. Because steps() makes the timing discrete, the browser holds one background position and then jumps to the next instead of displaying intermediate positions that would expose parts of neighboring frames.