Layout

Responsive design

Responsive design means your layout adapts to different screen sizes instead of staying fixed. It is about making sure your content looks good and works well on phones, tablets, laptops, and big monitors.

Design used to have fixed boundaries

Before screens, every design had a fixed size. Think of them like paintings. Leonardo da Vinci worked with a 30 by 21 inch canvas. He filled that space, and it never changed. Everything had a fixed position and size.

Today, our canvas is the screen and that screen can be any size. Your job is to make your design look good on all of them. To do that, you need more than just sizing and positioning. You need to understand the tools that help your layout adapt.

Now we deal with breakpoints

Breakpoints are different screen widths where your layout can adjust.

In the Framer editor, you see breakpoints lined up next to each other. One of them is always the default (usually desktop) and that one affects all others. If you make changes on a smaller breakpoint, those stay local and do not affect even smaller viewports.

You can create as many breakpoints as you want, but honestly, the three that Framer suggests out of the box are good enough for most use cases.

In special cases, like advanced grid layouts, you might want to add a larger breakpoint, for example, if you want to show six columns instead of three above 1600 pixels.

In most cases, Framer’s default breakpoint settings work just right.

In most cases, Framer’s default breakpoint settings work just right.

In most cases, Framer’s default breakpoint settings work just right.

Layout options

You can tweak several values in the Layout panel to get the result you want. Let’s go through them one by one.

Type

What looks like a layer in the left panel is actually a div under the hood. Just a regular HTML element. In Framer, these divs are used to build stacks and grids.

A stack places elements next to or below each other, depending on the direction. A grid arranges them in rows and columns, based on how many you set.

So yes, it looks like layers, but it behaves like structured layout. Makes sense now, right?

Stack
Grid

The small icon next to the stack in the left panel also shows its type.

The small icon next to the stack in the left panel also shows its type.

The small icon next to the stack in the left panel also shows its type.

Direction

Defines whether elements are laid out horizontally or vertically inside a stack. You can switch this per breakpoint for responsive layouts.

You will use this often to control how content flows on different screen sizes.

Horizontal
Vertical

Only available when the element is set to Stack.

Only available when the element is set to Stack.

Only available when the element is set to Stack.

The small icon next to the stack in the left panel also shows its direction.

The small icon next to the stack in the left panel also shows its direction.

The small icon next to the stack in the left panel also shows its direction.

Distribute

This controls how elements are spaced inside their parent, whether they sit at the start, in the center, or at the end of the container. It follows the direction you set above, so distribution happens horizontally or vertically depending on that setting.

There are also some less obvious but powerful options, like Space Between, which pushes the first and last elements to the edges and leaves space between.

Align

Sets how elements align inside the parent. The available alignment options depend on the layout direction. So you will be aligning either horizontally or vertically based on the direction you set above.

Wrap

Lets elements move to a new line if they do not fit in one row. Especially helpful when working with tags, buttons, or dynamic content.

Wrap does not work on elements with 'Fill' sizing.

Wrap does not work on elements with 'Fill' sizing.

Wrap does not work on elements with 'Fill' sizing.

Gap and Padding

Gap controls the space between elements. Padding controls the space inside the container.

While these settings are not required for a layout to be responsive, they make a big difference in how your design feels on different screens. Think of it this way: bigger screens usually need more padding, while smaller screens feel better with tighter spacing. It helps your layout breathe.

Do not expect to use variable tokens for these values like you can in Figma. Framer does not currently support that feature for layout properties such as gap or padding.

Do not expect to use variable tokens for these values like you can in Figma. Framer does not currently support that feature for layout properties such as gap or padding.

Do not expect to use variable tokens for these values like you can in Figma. Framer does not currently support that feature for layout properties such as gap or padding.

Additional layout techniques to keep in mind

Beyond sizing, positioning, and alignment, there are a few extra techniques that help your layout respond better. These include how you control content order, visibility, scrolling, and overflow.

Content order

In the layer panel on the left, you can change the visual order of elements without changing their actual layer structure. This is especially useful when you want to rearrange content for mobile without affecting the desktop version, or vice versa.

1st on Desktop

3rd on Mobile

2nd on Desktop

1st on Mobile

3rd on Desktop

2nd on Mobile

Visibility

Use visible or not to hide or show elements at specific breakpoints. This is useful for showing simpler versions of content on smaller screens.

Overflow

Controls whether content inside a container is clipped, visible, hidden, or scroll.

By default, overflow affects both directions. But if you need more control, you can adjust the X or Y overflow separately using the + button in the Styles panel.

One thing to watch out for: when overflow is set to visible, the browser uses the size of the largest overflowing element to calculate the page width. This can cause the rest of your layout to shrink, especially on mobile breakpoints. If your layout suddenly looks too small, chances are something is sticking out past the edge of the screen.

Is it too big for this container?

In Framer, Overflow is the equivalent of Clip content in Figma.

In Framer, Overflow is the equivalent of Clip content in Figma.

In Framer, Overflow is the equivalent of Clip content in Figma.

On smaller breakpoints, always check that no content is overflowing the screen. Otherwise, your layout might break or look zoomed out.

On smaller breakpoints, always check that no content is overflowing the screen. Otherwise, your layout might break or look zoomed out.

On smaller breakpoints, always check that no content is overflowing the screen. Otherwise, your layout might break or look zoomed out.

Overflow: Scroll

Sometimes you want content to overflow a container, especially on mobile. That’s where scroll comes in.

It lets you scroll content inside the parent, without making the entire page scrollable.

To enable this:

  • Set Overflow to Scroll

  • Use the + button to define the scroll direction (Overflow X or Y)

  • Optionally, turn on Overscroll: Contain to prevent bounce effects

  • And if you want to hide the scrollbar (like on most mobile designs), toggle Scrollbars: Hidden

Is it too big for this container?

Scroll right

One last thing to remember

On mobile and tablet, your cursor is your finger, which means there is no hover. Even though hover effects can add great UX on desktop, you need to handle them differently on touch devices. Always make sure that hover-only interactions are backed up by something that works on tap as well.

Learn responsive design

Learn responsive design

Create a free website with Framer, the website builder loved by startups, designers and agencies.