rotateX/rotateY alone show no depth — perspective is what creates it. Set perspective: 200px on the parent of the element you're rotating in 3D, and that parent becomes "a screen 200px from the camera" with children rotating inside it (or use the perspective(200px) transform function directly on the element — same effect).
A smaller value means the camera sits closer, so size and distortion swing dramatically as things rotate (a fisheye feel). A larger value means the camera is farther away, so the change is gentle. Compare the two boxes in the demo — same rotateY animation, but the perspective: 200px one warps far more aggressively.
For nested 3D structures (a cube, say), give the rotating group transform-style: preserve-3d too, or its own children get flattened instead of staying three-dimensional.
When to use
Use 800–1500px for a subtle depth (card flips, product showcases) and start around 200–400px for an exaggerated teaser/intro animation.