Skip to content

Instantly share code, notes, and snippets.

@johnlindquist
Created October 5, 2025 16:07
Show Gist options
  • Save johnlindquist/b82190c4c44fbdff60013ffd48bffc8e to your computer and use it in GitHub Desktop.
Save johnlindquist/b82190c4c44fbdff60013ffd48bffc8e to your computer and use it in GitHub Desktop.
3D Rotating Glassmorphic Cube - CodePen Demo Walkthrough

3D Rotating Glassmorphic Cube - CodePen Demo

Overview

Created an impressive visual demonstration on CodePen featuring a 3D rotating cube with glassmorphism effects, animated gradient backgrounds, and emoji icons on each face.

Live Demo: https://codepen.io/John-Lindquist/pen/ByjpoBK

What I Built

Visual Features

  • 3D Rotating Cube with 6 faces, each displaying a different emoji ()
    • Glassmorphism Effect with frosted glass appearance, blur effects, and transparent backgrounds
    • Animated Gradient Background that smoothly transitions between three color schemes:
    • Purple/Blue gradient (#667eea to #764ba2)
  • - Pink/Red gradient (#f093fb to #f5576c)
    
  •   - Cyan/Blue gradient (#4facfe to #00f2fe)
    
  •   - **Pulsing Text** with "CodePen Demo" that scales smoothly
    
  •   - **Continuous 3D Rotation** on both X and Y axes
    

Technical Implementation

HTML Structure

<div class="scene">
    <div class="cube">
      <div class="face front"></div>
      <div class="face back"></div>
      <div class="face right"></div>
      <div class="face left"></div>
      <div class="face top"></div>
      <div class="face bottom"></div>
  </div>
</div>
<div class="text">CodePen Demo</div>

Key CSS Techniques Used

1. 3D Transforms & Perspective

  • Used perspective: 1000px on the scene container
    • Applied transform-style: preserve-3d to maintain 3D space
    • Positioned each face with translateZ() and rotation transforms

2. Glassmorphism

.face {
  background: rgba(255,255,255,0.1);
    backdrop-filter: blur(10px);
      border: 3px solid rgba(255,255,255,0.3);
        box-shadow: 0 8px 32px rgba(0,0,0,0.2);
        }
        ```
        
        **3. Cube Face Positioning**
        Each face is absolutely positioned and transformed to create the cube:
        ```css
        .front  { transform: rotateY(0deg) translateZ(150px); }
        .back   { transform: rotateY(180deg) translateZ(150px); }
        .right  { transform: rotateY(90deg) translateZ(150px); }
        .left   { transform: rotateY(-90deg) translateZ(150px); }
        .top    { transform: rotateX(90deg) translateZ(150px); }
        .bottom { transform: rotateX(-90deg) translateZ(150px); }
        ```
        
        **4. Animations**
        - **Cube Rotation:** 20-second infinite linear rotation on both axes
        - **Background Shift:** 10-second color gradient transition
        - **Text Pulse:** 2-second scale animation
        
        ## Development Process
        
        ### Initial Approach
        1. Started with a canvas-based particle system approach
        2. Encountered JavaScript syntax errors and rendering issues
        3. Canvas particles weren't displaying properly in the preview
        
        ### Pivot to CSS-Only Solution
        1. Decided to create a pure CSS demonstration for reliability
        2. Chose 3D cube with glassmorphism as it showcases modern CSS capabilities
        3. No JavaScript required - everything is CSS animations
        
        ### Why This Approach Worked
        - **CSS-only animations** are more reliable and don't require debugging JS
        - **3D transforms** are well-supported in modern browsers
        - **Glassmorphism** is a trending design aesthetic
        - **Emojis** add visual interest without requiring image assets
        - **Pure CSS** means no runtime errors or loading issues
        
        ## CSS Features Demonstrated
        
        1. **3D Transforms**
           - `rotateX()`, `rotateY()`, `translateZ()`
              - `perspective` and `transform-style: preserve-3d`
              
              2. **Modern Effects**
                 - `backdrop-filter: blur()` for glassmorphism
                    - `linear-gradient()` with animation
                       - `rgba()` for transparency
                       
                       3. **Animations**
                          - `@keyframes` for custom animations
                             - `animation` shorthand properties
                                - Multiple simultaneous animations
                                
                                4. **Layout Techniques**
                                   - Flexbox for centering
                                      - Absolute positioning for 3D space
                                         - Fixed positioning for overlay text
                                         
                                         ## Lessons Learned
                                         
                                         1. **Pure CSS is often more reliable** than canvas for simple visual demos
                                         2. **Glassmorphism requires backdrop-filter** which may need vendor prefixes
                                         3. **3D transforms require proper nesting** (scene  cube  faces)
                                         4. **Emojis are great visual elements** that work across platforms
                                         5. **Animated gradients on body** create dynamic backgrounds efficiently
                                         
                                         ## Browser Compatibility
                                         
                                         Works best in modern browsers with support for:
                                         - CSS 3D Transforms
                                         - `backdrop-filter` (may need -webkit- prefix)
                                         - CSS animations
                                         - Emoji rendering
                                         
                                         ## Potential Enhancements
                                         
                                         - Add mouse interaction to control rotation speed
                                         - Include more complex gradient patterns
                                         - Add particle effects with CSS
                                         - Create multiple cubes with different animations
                                         - Add responsive sizing for mobile devices
                                         
                                         ---
                                         
                                         **Created:** October 2025  
                                         **Tools:** CodePen, HTML, CSS  
                                         **No JavaScript Required**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment