9 hand-coded CSS 3D effects built with real transforms — perspective, preserve-3d, translateZ, rotateX/Y — not pseudo-3D shadows. The collection spans 3D card flips, a cylindrical coverflow carousel, cursor-tilt pricing cards, a page-turn flipbook, a drag-rotate Bauhaus cube, a synth control panel, a luxury jewel showcase, a 5×5 spinning cube matrix, and a 60-orb DNA double helix. Every demo is scope-prefixed so its perspective context and parallax events stay inside its wrapper — drop any combination onto the same page and they coexist without fighting for the cursor. No WebGL, no Three.js, no libraries.

9 light JSPublished

Related23 CSS Flip Cards33 CSS Card Hover Effects22 CSS Parallax Effects

Iridescent Flip Cards — preview
01 / 09CSS + JS

Iridescent Flip Cards

Four team-member cards floating on a near-black ground, each wrapped in a continuously rotating conic-gradient iridescent border driven by a CSS @property custom-angle animation. The front shows a CSS-drawn portrait (avatar built from layered radii — no images), role, name, and skill tags; hover or tap flips the card on the Y axis to reveal a pull-quote, contact metadata, and CTA. Each card carries a unique warm/cool palette (violet, aqua, rose, sage) that bleeds through the iridescent halo. Fraunces + DM Mono. Best for team bio sections, product feature grids, pricing tier showcases, conference speaker pages.

Published

Midnight Coverflow — preview
02 / 09CSS + JS

Midnight Coverflow

Seven cards arranged in a cylindrical coverflow perspective — the active card at full scale and brightness, flanking cards receding in angle, Z-depth, and brightness so the focused piece reads with cinematic clarity. Each card is a distinct dark ambient art piece built from layered radial gradients and decorative geometric blobs. A native -webkit-box-reflect floor reflection grounds the carousel, and users can navigate by arrows, dots, keyboard, or click-drag swipe. Space Grotesk + Unbounded. Best for portfolio galleries, media collections, hero sliders, editorial product reveals, music/film catalogs.

Published

Kinetic Tilt Cards — preview
03 / 09CSS + JS

Kinetic Tilt Cards

Three pricing cards (Starter / Pro / Enterprise) that track individual mouse positions via smooth lerp animation loops — each card applies perspective + rotateX + rotateY relative to cursor, with a radial glare gradient following the hotspot. Parallax background and midground layers shift at different depths during the tilt to sell real volumetric depth, and the middle "Most Popular" card floats elevated to bias selection. Syne + Syne Mono. Best for pricing pages, premium product grids, SaaS upgrade flows, plan-comparison sections.

Published

Page-Turn Flipbook — preview
04 / 09CSS + JS

Page-Turn Flipbook

A physical book with a dark leather cover, cream parchment spreads, and pages that arc through a real 0° → -180° rotateY transform with the hinge anchored at transform-origin: left center. Each spread carries genuine editorial typography — pull quotes, column rules, drop caps, colored section pages — and the gutter shadow on each face simulates the dip near the spine. Click the right half of the book to advance, the left half to go back, or use the keyboard arrows / nav buttons. Playfair Display + EB Garamond. Best for digital magazines, restaurant menus, lookbooks, interactive storytelling, brand annual reports.

Published

Bauhaus Cube Navigator — preview
05 / 09CSS + JS

Bauhaus Cube Navigator

A large drag-rotatable CSS 3D cube where each of the six genuine faces (built with translateZ + rotateX/Y) is a bold Bauhaus color block presenting a service category — Brand, Web, Motion, Space, Type, Print. Snap-to-face buttons below give precise navigation, an auto-rotate toggle keeps the cube turning slowly when idle, and both mouse and touch dragging let users orbit the cube freely. Bebas Neue + Space Grotesk. Best for product configurators, portfolio anchor sections, agency service navigators, interactive menus.

Published

Modular Synth Controls — preview
06 / 09CSS + JS

Modular Synth Controls

A dark anodized panel with four interaction systems working simultaneously: push buttons with 3D translateY press travel and colored LED dots, toggle switches with a spring-overshoot thumb animation, six vertical faders with drag-to-set handles + fill bars + real-time value readouts, and dual VU meters with color-coded segments (cyan → amber → red) animating continuously. A readout bar at the top updates live as controls change. Share Tech Mono + Rajdhani. Best for audio production apps, game HUDs, creative dashboards, hardware-inspired control panels.

Published

Obsidian Vault — preview
07 / 09CSS + JS

Obsidian Vault

Three floating jewel product cards (Amethyst, Sapphire, Ruby) hover-flip in a dark atmospheric void with drifting gold-dust particles. Each card bobs at its own rhythm and reveals a back face with acquisition details on hover. The CSS gem itself is built from clip-path hexagons with gradient facets and a slow breathing glow. The whole scene tilts in 3D space following the cursor via smooth parallax interpolation. Cormorant Garamond + Cinzel. Best for luxury e-commerce, high-end jewelry brands, watchmaker product pages, premium collectible drops.

Published

Neon Lattice — preview
08 / 09CSS + JS

Neon Lattice

A 5×5 matrix of genuine CSS 3D cubes, each with six correctly positioned faces using translateZ and rotateY, spinning at randomized axes and speeds. Rows pulse in distinct neon bands — cyan, magenta, lime, amber, rose — with glowing top caps that throw colored drop-shadows down through the lattice. A scrolling grid background and slow scanline reinforce the cyberpunk readout feel, and full mouse-tilt parallax rotates the entire matrix in 3D space. Pure transforms, no WebGL. Best for tech dashboards, cyberpunk loading screens, interactive brand heros, sci-fi product launches.

Published

Chromatic Helix — preview
09 / 09CSS + JS

Chromatic Helix

A full 3D DNA-style double helix of 60 glowing CSS orbs (30 per strand), mathematically positioned along sinusoidal spiral paths using translate3d. Strand 1 bleeds through warm sunset tones (red → amber → lime); strand 2 through cool space tones (cyan → violet → rose). Connecting rungs bridge the two strands at every other level. A starfield canvas twinkles behind a soft nebula gradient, the helix auto-rotates at a steady cadence, and click-drag scrubs the rotation forward or backward. Best for scientific/biotech visualization, decorative data art, cinematic preloaders, immersive product reveal sections.

Published

FAQ

Frequently asked questions

Is this real 3D or just shadow tricks?
Real 3D. The scenes use the browser's actual transform pipeline — perspective on the wrapper to set up the viewing frustum, transform-style: preserve-3d on the children so transforms compose in 3D space, and per-element translateZ / rotateX / rotateY / rotateZ to position geometry. The Neon Lattice demo, for example, builds each cube from six divs translated to the six face positions of a 52px cube — exactly how the browser was designed to render 3D. No WebGL, no canvas (except the starfield in the helix demo), no libraries. The output is composited on the GPU just like a CSS animation, so it's cheap to run.
When should I use CSS 3D versus reaching for Three.js or WebGL?
CSS 3D is the right tool when the geometry is simple, the camera is mostly static, and the goal is decoration or product reveal — hover-flip cards, exploded-axis dashboards, helix loaders, cube grids, parallax depth on a hero image. The browser does the heavy lifting and you stay in CSS for animation, easing, media queries, and reduced-motion fallbacks. WebGL becomes necessary when you need real lighting, post-processing, dynamic geometry (terrain, particles in the thousands, deforming meshes), arbitrary camera control, or shaders. For a product page that needs a flip card or a spinning logo cube, CSS 3D is faster to build, easier to debug, and ships in 2 KB instead of 200 KB.
Why does my 3D scene look flat or 'cardboard'?
Three near-universal reasons. (1) Missing perspective on the parent — without it, transforms are orthographic and depth reads as scale only; add perspective: 1000px to the wrapper. (2) Missing transform-style: preserve-3d on intermediate containers — transforms collapse to 2D at the first ancestor that flattens. Every container between the wrapper and the rotated child needs preserve-3d. (3) overflow: hidden on an ancestor with transform — this implicitly creates a new stacking context that flattens children. Move the overflow clipping outside the 3D scope, or use a non-transformed clipping wrapper. Run through these three and 90% of 'why is my cube flat' issues resolve.
What about performance on mobile?
CSS 3D transforms are GPU-composited, so they're cheap — even the helix demo (60 orbs, each with multi-layer box-shadow) holds 60fps on a mid-tier Android. The expensive parts are box-shadow blur (which is rasterized, not composited) and large filter: blur() — both demos here cap blur radius to keep the GPU happy. The animations themselves (rotate transforms, opacity) are essentially free. The one trap is animating non-composited properties (width, height, top/left) — these trigger layout, which on a 3D scene with many children is expensive. Stick to transform and opacity for animation and the scenes run cold-frame-time on every device that ships in 2026.
How are the three scenes prevented from interfering with each other?
Three layers of containment. (1) CSS is scoped — every selector is prefixed with .cd-obs / .cd-nln / .cd-chx, so there's no class collision and the wrappers carry their own perspective + custom properties. (2) JS is scoped — each demo's mouse and drag handlers attach to root.addEventListener, not document.addEventListener, so moving the cursor over the helix demo doesn't tilt the cube matrix. (3) DOM injection is scoped — particles, cubes, orbs, and rungs that the source HTMLs appended to document.body are appended to the demo's own wrapper instead, so they paint inside the gallery card and clean up cleanly. The starfield canvas in the helix demo uses a ResizeObserver tied to its wrapper, so it stays sized to the card, not the viewport.
Can I disable the motion for users who don't want it?
Already handled. Every demo respects prefers-reduced-motion: reduce — float animations, spin loops, glow pulses, parallax interpolation, and the helix auto-rotation all stop. The geometry still renders (you still see the cards, cubes, and helix), but the scene is static. The particle generator in the Obsidian Vault demo skips the spawn loop entirely when reduced motion is requested, so users on motion-sensitive setups don't pay the perf cost of 36 invisibly-animating dust particles.

Related collections

22 CSS Brutalism preview

22 CSS Brutalism

22 hand-coded brutalist and neubrutalist CSS designs covering the full spectrum of the aesthetic — from the anti-design brutalism of 2014-2018 (raw system fonts, zero border radius, monochrome density, visible structure) through to the neubrutalism of 2021-present (bright pastel fills, thick black borders, hard offset shadows with zero blur, rounded blocks). The neubrutalist half ships SaaS pricing cards with sticker badges, a pastel admin dashboard, signup forms, rotated feature cards, an offset-shadow navbar, a playful button set, a native dialog modal, a testimonial wall, blog cards, chunky toggles, a landing hero, an image gallery, stats panels and a rounded footer. The brutalist half covers product grids, raw form controls, a monochrome data dashboard, a portfolio index, indie SaaS pricing, Windows 95 desktop chrome, editorial long-read and a streetwear catalog. Every design is scoped under a .brt-NN prefix for no-collision pasting, guards prefers-reduced-motion, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

22 CSS Dark Mode UI preview

22 CSS Dark Mode UI

22 hand-coded CSS dark-mode UI patterns — prefers-color-scheme root strategy, data-theme attribute override, color-mix token system, light-dark() function, sidebar navigation, dashboard card grid, modal dialog, focus-ring contrast audit, three-state switcher, code editor surface, OLED true black, layered slate, aurora dim and more.

16 CSS Frosted Glass Effects preview

16 CSS Frosted Glass Effects

16 production CSS frosted glass effect designs with live demos and copy-paste code — a full-viewport login modal, dashboard overlay panel, sticky glassmorphism navbar with blur-on-scroll via IntersectionObserver, sidebar navigation menu, media-player footer overlay, animated login/signup form, split-panel contact form UI, profile info card, credit card payment UI, product display card, crypto finance dashboard, Apple-style weather widget, glass music player UI, translucent calendar widget, frosted glass modal popup, and a VisionOS-style floating app dock. Every demo uses backdrop-filter blur + saturation 180% on a colorful animated backdrop for real glassmorphism, with a @supports fallback so browsers without support stay readable. Scoped under .fg-NN, copy-paste ready.

Search CodeFronts

Loading…