The UI I have essentially has two separate sections alongside each other.
A “stage” on the left of the screen which is in fixed position, 100% height, 50% width of window.
And a scrolling feed of content to the right of that, about 10 items.
The effect I want to create is when I hover over a card on the right, the larger “stage” is filled with relevant content (image/video mostly) of the item that has been interacted with.
I want the appearance to be elegant so it fades in - but I can’t find a way to do this as they are not related / separated items.
Possible options…
I have tried a few things but I want to see if there is a better solution.
Overlays: I can’t use overlays as I have a fixed header and the overlay overlaps this.
Variables / Conditionals: I tried setting true/false and used and if/else condition to show and hide different frames but it doesn’t appear like there’s away to fade this. It just displays or hides instantly?
Multiple Artboards: Have 10 artboards for each hover and dissolve to a different one.
Mega Component: Wrap both elements in a Frame. Create a (mega) component and create different states for each change. Seems like this would be a pain to manage/maintain - and is similar to just having loads of artboards?
So that’s where I’m at. I hope that makes sense.
I thought it was worth posting to see if anyone had any genious (or simiple) ideas I’m missing.
The variable/conditionals approach would be great - just a shame I need the content to fade in?
Creating an elegant hover interaction where the “stage” updates with relevant content and fades in when hovering over a card can be achieved effectively in Figma with some creative techniques. Here’s an approach tailored to your requirements:
Best Approach: Leveraging Interactive Components with Overlays or Layer Transparency
This solution avoids multiple artboards and keeps the design manageable.
Step 1: Structure Your Layout
Stage Section (Left Side):
Fixed position, 100% height, 50% width.
Create a placeholder frame for the “stage content” (image/video).
Set the default state to an empty or neutral image.
Content Feed Section (Right Side):
Create your scrolling list of cards as individual frames.
Step 2: Design Stage States
For each card in the feed, design a corresponding “stage” frame with the desired content (image/video).
Ensure the stage’s design is visually consistent across states (e.g., fade animation).
Step 3: Interactive Component Setup
Combine the “Stage” and “Card” as Components:
Wrap the entire layout (stage + feed) into a single component.
Add variants for each card hover state:
Default: Neutral stage content.
Card 1 Hover: Stage filled with Card 1’s content.
Card 2 Hover: Stage filled with Card 2’s content.
… and so on.
Set Hover Interactions:
In Prototype mode, for each card, create an interaction:
Trigger: Hover.
Action: Change to (corresponding variant).
Animation: Smart Animate with Dissolve (to create the fade effect).
Step 4: Test the Prototype
Hovering over each card should transition the stage content smoothly using the dissolve animation.
The fixed header and layout structure will remain intact since everything is inside one frame/component.
Why This Works
Efficient Management: You don’t need multiple artboards; variants handle the hover states.
Smooth Transitions: The Smart Animate + Dissolve gives a clean fade-in effect.
Scalability: You can easily add new cards or update the stage content without duplicating frames.
Alternative: Advanced Use of Variables
If you prefer using variables, you can simulate the fade effect using opacity changes:
Create a Boolean Variable for each card (e.g., card1Hovered).
Link the stage’s content opacity to the variable.
Use Smart Animate to transition the opacity when the variable is triggered.
This method requires more manual setup but avoids creating separate variants for each state.
Final Recommendation
The Interactive Component with Variants approach is the most manageable and elegant solution. It avoids overlay issues, maintains layout integrity, and leverages Figma’s built-in animation features effectively.
Let me know if you’d like a step-by-step guide for setting this up!