How to Turn 2D Elements into Interactive 3D Objects in Framer

How to Turn 2D Elements into Interactive 3D Objects in Framer

New

New

New

  • Guide

  • Interactive
  • 3D
  • Elements
  • Guide

  • Interactive
  • 3D
  • Elements
  • Guide

  • Interactive
  • 3D
  • Elements

How to Turn 2D Elements into Interactive 3D Objects in Framer

Learn how to turn any 2D element into an interactive 3D object in Framer. I'll show you how to use a secret component to achieve various interactive 3D animations and interactions on your website.

image of Nandi Muzsik

Posted by

Nandi

Interactive 3D card UI with hover effects, featuring a fitness-related product and a user profile card with gold accents, floating in a dynamic motion effect with blue circular trails
Interactive 3D card UI with hover effects, featuring a fitness-related product and a user profile card with gold accents, floating in a dynamic motion effect with blue circular trails
Interactive 3D card UI with hover effects, featuring a fitness-related product and a user profile card with gold accents, floating in a dynamic motion effect with blue circular trails

Table of contents

Getting started

First, start by adding a 2D element to your Framer canvas. This can be an image, a button, or even just a simple shape.

Then very simple, just drop my 3D Look component on the canvas and connect it to any frame.

Once the element is connected to the component, you can check out the right panel and customize its behavior through the component properties.

Here are some key properties you can tweak:

  • Dragging – By default, dragging is disabled, meaning the element will just look at the cursor. This works great for subtle, responsive interactions.

  • Rotation limit – Control how much (or how little) the element can rotate.

Getting started

First, start by adding a 2D element to your Framer canvas. This can be an image, a button, or even just a simple shape.

Then very simple, just drop my 3D Look component on the canvas and connect it to any frame.

Once the element is connected to the component, you can check out the right panel and customize its behavior through the component properties.

Here are some key properties you can tweak:

  • Dragging – By default, dragging is disabled, meaning the element will just look at the cursor. This works great for subtle, responsive interactions.

  • Rotation limit – Control how much (or how little) the element can rotate.

Getting started

First, start by adding a 2D element to your Framer canvas. This can be an image, a button, or even just a simple shape.

Then very simple, just drop my 3D Look component on the canvas and connect it to any frame.

Once the element is connected to the component, you can check out the right panel and customize its behavior through the component properties.

Here are some key properties you can tweak:

  • Dragging – By default, dragging is disabled, meaning the element will just look at the cursor. This works great for subtle, responsive interactions.

  • Rotation limit – Control how much (or how little) the element can rotate.

3D Look settings panel with interactive UI controls, including sensitivity, dragging, rotation limits, and perspective adjustments for a Linktree animation

The properties of the 3D look component.

3D Look settings panel with interactive UI controls, including sensitivity, dragging, rotation limits, and perspective adjustments for a Linktree animation

The properties of the 3D look component.

3D Look settings panel with interactive UI controls, including sensitivity, dragging, rotation limits, and perspective adjustments for a Linktree animation

The properties of the 3D look component.

Let’s walk through this example of an interactive card.

Let’s walk through this example of an interactive card.

Let’s walk through this example of an interactive card.

Interactive card.

Interactive card.

Interactive card.

Adding 2D element.

Adding 2D element.

Adding 2D element.

First, let's start by setting up the base structure of our interactive card.

Open Framer and create a new Frame for the card. Set the width and height to your preferred dimensions (e.g., 300x400 pixels).

Add a background image or gradient to make the card visually appealing. Adjust the corner radius to give it a softer look if needed.

Customizing the 3D effect

Now, let's make the card respond to the user's cursor movement.

Select the card Frame and drop the 3D Look component. The card animation now follows the cursor.

To make the 3D effect feel natural, we need to ensure that cursor interactions work smoothly. You can enable or disable dragging. By default, this is disabled, so the element will just look at the cursor in 3D space

To refine the effect, instead of an abrupt shift, add a smooth transition so the card gradually tilts as the cursor moves over it.

Fine-tune the perspective value to control the depth of the 3D effect (e.g., 1000px for a more realistic look).

First, let's start by setting up the base structure of our interactive card.

Open Framer and create a new Frame for the card. Set the width and height to your preferred dimensions (e.g., 300x400 pixels).

Add a background image or gradient to make the card visually appealing. Adjust the corner radius to give it a softer look if needed.

Customizing the 3D effect

Now, let's make the card respond to the user's cursor movement.

Select the card Frame and drop the 3D Look component. The card animation now follows the cursor.

To make the 3D effect feel natural, we need to ensure that cursor interactions work smoothly. You can enable or disable dragging. By default, this is disabled, so the element will just look at the cursor in 3D space

To refine the effect, instead of an abrupt shift, add a smooth transition so the card gradually tilts as the cursor moves over it.

Fine-tune the perspective value to control the depth of the 3D effect (e.g., 1000px for a more realistic look).

First, let's start by setting up the base structure of our interactive card.

Open Framer and create a new Frame for the card. Set the width and height to your preferred dimensions (e.g., 300x400 pixels).

Add a background image or gradient to make the card visually appealing. Adjust the corner radius to give it a softer look if needed.

Customizing the 3D effect

Now, let's make the card respond to the user's cursor movement.

Select the card Frame and drop the 3D Look component. The card animation now follows the cursor.

To make the 3D effect feel natural, we need to ensure that cursor interactions work smoothly. You can enable or disable dragging. By default, this is disabled, so the element will just look at the cursor in 3D space

To refine the effect, instead of an abrupt shift, add a smooth transition so the card gradually tilts as the cursor moves over it.

Fine-tune the perspective value to control the depth of the 3D effect (e.g., 1000px for a more realistic look).

Setting perspective value.

Setting perspective value.

Setting perspective value.

3D carousel with a rotation limit.

3D carousel with a rotation limit.

3D carousel with a rotation limit.

First make multiple arms, each with an image layer, and rotate them in 3D along the Y axis to form a circle of images. (check this out to make your life easier 3D transforms in Framer)

Once the images are arranged in a circle, I connect this frame to the 3D look component. And now a very useful property is the rotation limit.

Let's say you want to create a 3D carousel that can only be rotated to the left and right, and the rotation along the X axis is completely disabled by setting the limit to 0.

Here you’ll want to enable dragging for the carousel effect.

When connecting a component, we need to add an additional code override to the component's primary variant to ensure the 3D look works.

Framer doesn't natively allow adding transform properties to primary variants in components, that’s why we need this override. Grab it below.

First make multiple arms, each with an image layer, and rotate them in 3D along the Y axis to form a circle of images. (check this out to make your life easier 3D transforms in Framer)

Once the images are arranged in a circle, I connect this frame to the 3D look component. And now a very useful property is the rotation limit.

Let's say you want to create a 3D carousel that can only be rotated to the left and right, and the rotation along the X axis is completely disabled by setting the limit to 0.

Here you’ll want to enable dragging for the carousel effect.

When connecting a component, we need to add an additional code override to the component's primary variant to ensure the 3D look works.

Framer doesn't natively allow adding transform properties to primary variants in components, that’s why we need this override. Grab it below.

First make multiple arms, each with an image layer, and rotate them in 3D along the Y axis to form a circle of images. (check this out to make your life easier 3D transforms in Framer)

Once the images are arranged in a circle, I connect this frame to the 3D look component. And now a very useful property is the rotation limit.

Let's say you want to create a 3D carousel that can only be rotated to the left and right, and the rotation along the X axis is completely disabled by setting the limit to 0.

Here you’ll want to enable dragging for the carousel effect.

When connecting a component, we need to add an additional code override to the component's primary variant to ensure the 3D look works.

Framer doesn't natively allow adding transform properties to primary variants in components, that’s why we need this override. Grab it below.

import { useState, useEffect, ComponentType } from "react"

export function withPreserve3d(Component): ComponentType {
    return (props) => {
        return (
            <Component {...props} style={{ transformStyle: "preserve-3d" }} />
        )
    }
}
import { useState, useEffect, ComponentType } from "react"

export function withPreserve3d(Component): ComponentType {
    return (props) => {
        return (
            <Component {...props} style={{ transformStyle: "preserve-3d" }} />
        )
    }
}
import { useState, useEffect, ComponentType } from "react"

export function withPreserve3d(Component): ComponentType {
    return (props) => {
        return (
            <Component {...props} style={{ transformStyle: "preserve-3d" }} />
        )
    }
}

Final touches

And that’s it! You’ve successfully transformed a simple 2D object into an interactive 3D element in Framer.

I go in depth on my interactive 3D lesson, check it out for more info.

Now go ahead and experiment with different elements to create an engaging experience for your users!

Final touches

And that’s it! You’ve successfully transformed a simple 2D object into an interactive 3D element in Framer.

I go in depth on my interactive 3D lesson, check it out for more info.

Now go ahead and experiment with different elements to create an engaging experience for your users!

Final touches

And that’s it! You’ve successfully transformed a simple 2D object into an interactive 3D element in Framer.

I go in depth on my interactive 3D lesson, check it out for more info.

Now go ahead and experiment with different elements to create an engaging experience for your users!

Framer Navigator

Learn the fundamentals of Framer for free.

Build your ideas with ease by learning the basics of website building with Framer.

Nandi portrait's background
Nandi's portrait

Framer Navigator

Learn the fundamentals of Framer for free.

Build your ideas with ease by learning the basics of website building with Framer.

Nandi portrait's background
Nandi's portrait

Framer Navigator

Learn the fundamentals of Framer for free.

Build your ideas with ease by learning the basics of website building with Framer.

Nandi portrait's background
Nandi's portrait

More posts

More posts

  • Interactive magnetic button effect with hover animation in Framer UI

    How to Make Magnetic Buttons in Framer

    Guide

    Interactive magnetic button effect with hover animation in Framer UI

    How to Make Magnetic Buttons in Framer

    Guide

    Interactive magnetic button effect with hover animation in Framer UI

    How to Make Magnetic Buttons in Framer

    Guide

  • Pixel trail effect, iPadOS pointer cursor, and parallax floating elements in Framer UI

    Use These 6 Components to Make Your Website Feel Premium

    Toplist

    Pixel trail effect, iPadOS pointer cursor, and parallax floating elements in Framer UI

    Use These 6 Components to Make Your Website Feel Premium

    Toplist

    Pixel trail effect, iPadOS pointer cursor, and parallax floating elements in Framer UI

    Use These 6 Components to Make Your Website Feel Premium

    Toplist

Nandi Muzsik

How can I improve Framer Uni?

Let me know if there’s a missing feature or something that could be improved.

Share feedback

Nandi Muzsik

How can I improve Framer Uni?

Let me know if there’s a missing feature or something that could be improved.

Share feedback