New
New
New
Guide
- Fluid
- Gooey
- Animation
Guide
- Fluid
- Gooey
- Animation
Guide
- Fluid
- Gooey
- Animation
How to Create Fluid Animations in Framer
In this Framer tutorial, I'm revealing the one secret behind the smoothest fluid animations on the web. You're going to learn how to use the Gooey Effect component to create these animations yourself. By the end of this tutorial you'll know everything you need to create fluid, almost liquid-like animations for your websites.
Table of contents
What is the ONE secret?
I’d like to introduce you to the Gooey Effect component.
Basically how it works is that you place the component in a container frame (that doesn't have any fill color) set it to absolute positioning so it doesn't take up any space, and now all frames within that container will have this fluid, gooey effect.
Then you can tweak the intensity to get the perfect effect for your design.
Fluid interactions
I have a bunch of different examples of using this effect. (Psst… You can check all of them out on this link.)
For example here’s a few cool ones.
Gooey loader
What is the ONE secret?
I’d like to introduce you to the Gooey Effect component.
Basically how it works is that you place the component in a container frame (that doesn't have any fill color) set it to absolute positioning so it doesn't take up any space, and now all frames within that container will have this fluid, gooey effect.
Then you can tweak the intensity to get the perfect effect for your design.
Fluid interactions
I have a bunch of different examples of using this effect. (Psst… You can check all of them out on this link.)
For example here’s a few cool ones.
Gooey loader
What is the ONE secret?
I’d like to introduce you to the Gooey Effect component.
Basically how it works is that you place the component in a container frame (that doesn't have any fill color) set it to absolute positioning so it doesn't take up any space, and now all frames within that container will have this fluid, gooey effect.
Then you can tweak the intensity to get the perfect effect for your design.
Fluid interactions
I have a bunch of different examples of using this effect. (Psst… You can check all of them out on this link.)
For example here’s a few cool ones.
Gooey loader
I could literally stare at this loader all day. So mesmerizing.
Gooey tooltip
I could literally stare at this loader all day. So mesmerizing.
Gooey tooltip
I could literally stare at this loader all day. So mesmerizing.
Gooey tooltip
I love this one.
Let me show you how I made it.
Making your own tooltip
Start by creating a button that will trigger the animation. Place it on your canvas and ensure it's centered. Make it pretty by rounding the corners.
Now duplicate the button frame. This will be our tooltip.
Adjust the tooltip frame to a smaller size, I made it 12 text size the height to 28px and the right and left padding to 12.
Now wrap both buttons into a container and turn them into a stack. Change the size to “fit.”
And finally you can add the Gooey Effect Component to the stack (that you copied earlier)
Setting up positioning
Change the tooltip’s positioning to “absolute” to enable free movement.
Ensure the gooey effect component is also set to absolute positioning. This keeps it invisible and ensures it doesn’t take up space in the component structure.
Adjusting visibility and overflow
The tooltip should be positioned behind the button. To achieve this, ensure the container wrapping the tooltip and button isn’t set to “overflow hidden.”
Change the overflow setting to “visible” to allow the tooltip to be seen when moved.
Managing z-Index for layering
The tooltip may initially appear on top of the button. To fix this, adjust the Z-index.
Set the button’s Z-index higher than the tooltip’s. For example, set the button’s Z-index to 2 and the tooltip’s to 1. This places the tooltip behind the button.
Defining the starting state for animation
Set the tooltip to start as a small circle by fixing its width and height to 28px.
Hide the text inside the tooltip by setting its opacity to zero.
Add a blur effect (e.g., blur set to 2) for a subtle transition.
Apply a scale transform (e.g., scale set to 0.8) to make the tooltip grow as it appears.
Defining the initial state
Position the tooltip behind the button in its initial state.
Convert this setup into a reusable component for consistent animation behavior.
With the Gooey Effect in place, let's define the starting state of our animation. The goal is to have the tooltip start as a small circle and then expand.
Creating variants
Now, it's time to create different animation states. In Framer, this is done using variants.
Start Variant: This is your initial small circle state.
Mid Variant: This state shows the circle slightly expanded but not fully revealed.
End Variant: The final state where the tooltip fully expands, revealing its content.
I love this one.
Let me show you how I made it.
Making your own tooltip
Start by creating a button that will trigger the animation. Place it on your canvas and ensure it's centered. Make it pretty by rounding the corners.
Now duplicate the button frame. This will be our tooltip.
Adjust the tooltip frame to a smaller size, I made it 12 text size the height to 28px and the right and left padding to 12.
Now wrap both buttons into a container and turn them into a stack. Change the size to “fit.”
And finally you can add the Gooey Effect Component to the stack (that you copied earlier)
Setting up positioning
Change the tooltip’s positioning to “absolute” to enable free movement.
Ensure the gooey effect component is also set to absolute positioning. This keeps it invisible and ensures it doesn’t take up space in the component structure.
Adjusting visibility and overflow
The tooltip should be positioned behind the button. To achieve this, ensure the container wrapping the tooltip and button isn’t set to “overflow hidden.”
Change the overflow setting to “visible” to allow the tooltip to be seen when moved.
Managing z-Index for layering
The tooltip may initially appear on top of the button. To fix this, adjust the Z-index.
Set the button’s Z-index higher than the tooltip’s. For example, set the button’s Z-index to 2 and the tooltip’s to 1. This places the tooltip behind the button.
Defining the starting state for animation
Set the tooltip to start as a small circle by fixing its width and height to 28px.
Hide the text inside the tooltip by setting its opacity to zero.
Add a blur effect (e.g., blur set to 2) for a subtle transition.
Apply a scale transform (e.g., scale set to 0.8) to make the tooltip grow as it appears.
Defining the initial state
Position the tooltip behind the button in its initial state.
Convert this setup into a reusable component for consistent animation behavior.
With the Gooey Effect in place, let's define the starting state of our animation. The goal is to have the tooltip start as a small circle and then expand.
Creating variants
Now, it's time to create different animation states. In Framer, this is done using variants.
Start Variant: This is your initial small circle state.
Mid Variant: This state shows the circle slightly expanded but not fully revealed.
End Variant: The final state where the tooltip fully expands, revealing its content.
I love this one.
Let me show you how I made it.
Making your own tooltip
Start by creating a button that will trigger the animation. Place it on your canvas and ensure it's centered. Make it pretty by rounding the corners.
Now duplicate the button frame. This will be our tooltip.
Adjust the tooltip frame to a smaller size, I made it 12 text size the height to 28px and the right and left padding to 12.
Now wrap both buttons into a container and turn them into a stack. Change the size to “fit.”
And finally you can add the Gooey Effect Component to the stack (that you copied earlier)
Setting up positioning
Change the tooltip’s positioning to “absolute” to enable free movement.
Ensure the gooey effect component is also set to absolute positioning. This keeps it invisible and ensures it doesn’t take up space in the component structure.
Adjusting visibility and overflow
The tooltip should be positioned behind the button. To achieve this, ensure the container wrapping the tooltip and button isn’t set to “overflow hidden.”
Change the overflow setting to “visible” to allow the tooltip to be seen when moved.
Managing z-Index for layering
The tooltip may initially appear on top of the button. To fix this, adjust the Z-index.
Set the button’s Z-index higher than the tooltip’s. For example, set the button’s Z-index to 2 and the tooltip’s to 1. This places the tooltip behind the button.
Defining the starting state for animation
Set the tooltip to start as a small circle by fixing its width and height to 28px.
Hide the text inside the tooltip by setting its opacity to zero.
Add a blur effect (e.g., blur set to 2) for a subtle transition.
Apply a scale transform (e.g., scale set to 0.8) to make the tooltip grow as it appears.
Defining the initial state
Position the tooltip behind the button in its initial state.
Convert this setup into a reusable component for consistent animation behavior.
With the Gooey Effect in place, let's define the starting state of our animation. The goal is to have the tooltip start as a small circle and then expand.
Creating variants
Now, it's time to create different animation states. In Framer, this is done using variants.
Start Variant: This is your initial small circle state.
Mid Variant: This state shows the circle slightly expanded but not fully revealed.
End Variant: The final state where the tooltip fully expands, revealing its content.
Connecting variants with interactions
Use Framer's interaction triggers to connect these variants. For example, use a mouse enter trigger to transition from the start to the mid variant.
Adjust the transition time to ensure the animation flows smoothly.
Wrapping up
And that’s that. There’s so many cool ways to use this component.
Like look how nice this iMessage reaction is.
Connecting variants with interactions
Use Framer's interaction triggers to connect these variants. For example, use a mouse enter trigger to transition from the start to the mid variant.
Adjust the transition time to ensure the animation flows smoothly.
Wrapping up
And that’s that. There’s so many cool ways to use this component.
Like look how nice this iMessage reaction is.
Connecting variants with interactions
Use Framer's interaction triggers to connect these variants. For example, use a mouse enter trigger to transition from the start to the mid variant.
Adjust the transition time to ensure the animation flows smoothly.
Wrapping up
And that’s that. There’s so many cool ways to use this component.
Like look how nice this iMessage reaction is.
Hope you enjoyed this tutorial, have fun experimenting with this component.
If you wanna dive deeper, here’s a step-by-step video tutorial.
Hope you enjoyed this tutorial, have fun experimenting with this component.
If you wanna dive deeper, here’s a step-by-step video tutorial.
Hope you enjoyed this tutorial, have fun experimenting with this component.
If you wanna dive deeper, here’s a step-by-step video tutorial.