React 3D components
21 3D componentsLive previewFull source in your repo
Depth, perspective and real rotation, most of it in plain CSS rather than a 3D engine. Copy any one into your project and it runs without a renderer.
Works with
- React
- Next.js
- TypeScript
- Tailwind CSS
CSS 3D transform components
These use CSS transform, perspective and preserve-3d only: no renderer, no shader compilation, and nothing to download beyond the component itself.
Split-Flap DisplayA ceramic and graphite split-flap device that ripples each flap into your message.
Interactive 3D BookA tactile 3D book cover that opens on click with real matte depth, then turns each page on a weighted hinged flip.
Animated 3D FolderA real CSS 3D folder that tilts toward your cursor, drops its cover open, and lifts its files into a stepped index.
Perspective MarqueeA 3D tilted image grid with alternating rows scrolling infinitely in both directions.
Scroll StackCards that pin, tilt, and stack into a tidy deck as you scroll, with zero scroll hijacking anywhere in the sequence.
Fan Hover Card StackHover a stacked profile deck and watch the cards fan outward in sequence while the active one lifts to the front.
Animated MacBookA closed MacBook that hinges open and powers on when you hover, in ten finishes.
iPhone MockupA thick, extruded iPhone with a machined side rail, side buttons, and lock screen.
Tactile KeyboardA 65% QWERTY board with real key travel, live shift legends, and five colorways.
Refraction Glass ContainerReal refraction, where feDisplacementMap warps the actual pixels sitting behind the card instead of blurring them.
Cover Flow CarouselA 3D Cover Flow album carousel where side cards swing into the center and a mini player below follows the track.
WebGL and React Three Fiber components
These load a renderer and compile shaders before their first frame. Interactive 3D Globe runs on React Three Fiber, so test it on a mid range phone before it ships.
Interactive 3D GlobeA 3D Earth lit day and night from the real sun position, wrapped in a soft atmosphere, with smooth drag-to-orbit controls.
ChatGPT OrbLow-power WebGL fractal noise that blooms white ink inside a soft circular mask.
Siri OrbA glassy WebGL sphere with a prism ribbon sweeping a full spectrum through it.
AI OrbA near-black glass sphere with a violet rim that drifts while a model generates.
iPhone SiriTap the Dynamic Island and it swells into a live WebGL Siri orb of folded light.
Glass StripesDiagonal glass stripes refract a slow, glowing light that follows your pointer.
3D text effects and 3D cards
Depth for type and small surfaces: letters that flip or ripple in CSS 3D, a portrait carousel on a curved wall, and a spinning globe card.
Text FlipA 3D character flip on hover, staggered and springy across every single letter.
Text RippleA 3D character ripple with a traveling color crest, CSS-only and GPU-light.
3D Image CarouselPortrait cards line the inside of a curved wall, smallest at the center and larger toward each side. Drag or hover to turn.
Globe CardA dark icon card holding a dotted globe that slowly spins on its own axis.
WebGL effects without 3D geometry
Shader effects that render on the GPU but stay flat: liquid metal and glass, flame, grain and fluted glass. They cost the same renderer start up as the 3D pieces above, so the same mid range phone test applies.
SVG FireReal fire simulated on the GPU, rising from any SVG's edges, with embers and glow.
Particle ImageA photo rebuilt as halftone dots on springs that scatter from the pointer.
Chrome TextLiquid chrome text effect: inflated metal letters with sliding glints and sparkles.
Liquid Glass OrbA draggable soap-bubble orb you swipe upward to enter the page, where it settles as a compact, still glass anchor.
Liquid Metal ButtonA pill or icon button ringed in flowing liquid metal, for light and dark pages.
Gradient GrainLight leaks on film: saturated colour that burns to white under fine grain.
SVG Liquid AnimationAny SVG as a body of water: ripples, drips, and a surface that follows the pointer.
Fluted GlassAny photo seen through fluted glass, sliced into soft ribs that follow the pointer.
Gradient StripesA brand gradient sliced into glowing stripes that rise toward the pointer.
CSS 3D or WebGL: how to choose for a React project
Most things people call a 3D component in React are not running a 3D engine. A card that tilts toward the cursor, a book that opens, a stack that fans out: all of that is CSS 3D transforms. Set a perspective on the parent, set transform-style to preserve-3d on the child, then rotate with rotateX and rotateY. The browser composites the result on the GPU, it costs nothing to load, and it falls back to a flat layout where transforms are unsupported.
CSS perspective is the setting that most often makes a 3D effect look wrong. It is the distance from the viewer to the z equals zero plane, so a small value such as 400px gives a strong, almost fisheye distortion, and a large value such as 2000px flattens the effect until it barely reads. Set it on the container rather than on each transformed element, otherwise every child gets its own vanishing point and the group stops looking like one scene.
The CSS 3D components here cover the common shapes. Split-Flap Display flips real panels like a station board. Interactive 3D Book opens on click and turns its pages on a hinged flip, and Animated 3D Folder tilts toward the cursor and lifts its files into a stepped index. Card Stack Carousel, Fan Hover Card Stack and Scroll Stack arrange cards in depth. iPhone Mockup and Tactile Keyboard are objects built from transformed planes, and Refraction Glass Container warps the pixels behind a card with an SVG displacement filter. None of them ships a renderer.
You need WebGL when the surface has to be computed per pixel. A globe with an atmosphere, a lit sphere or a fluid orb cannot be expressed as rotating flat panels, because they depend on lighting across the whole surface. That is the line: if you can describe the effect as moving rectangles, CSS will do it, and if you have to describe it as light, you need a renderer.
In React the usual renderer is Three.js through React Three Fiber, which lets you write a 3D scene as components. Interactive 3D Globe is built that way, on React Three Fiber and drei. ChatGPT Orb and Siri Orb take a lighter route and draw their surface in a shader rather than a full scene, which keeps them far smaller than a general 3D setup while still needing WebGL.
The cost gap is not subtle. A CSS 3D component animates the moment the stylesheet parses. A WebGL component loads a renderer, compiles its shaders and only then paints, which on a mid range Android phone is a visible pause. That pause is fine three screens down and a real problem above the fold, where the component becomes the element Google times for Largest Contentful Paint.
Whatever you pick, respect reduced motion. Continuous rotation and parallax are common motion sickness triggers, and the browser already reports when someone has asked for less movement. Everything here reads the prefers-reduced-motion media query and settles into a composed static state rather than removing itself, so the component still shows what it is without moving.

