At the most basic level, what you may think of an "artboard" in other design tools is actually what we call a frame in Figma. We see frames as a foundational element for your designs that can act as a top-level container (like a device viewport) and/or represent areas or components within your design. Frames, and the ability to nest them, are an integral part of creating dynamic layouts in Figma.
Before we dive into the behaviors and properties of frames, let's quickly cover the three different ways you can create a frame.
Select the frame tool (
F), and choose a preset device size from the properties panel on the right. This will place a new frame on your canvas set to the exact dimensions of whatever device that you picked.
With the frame tool selected, click and drag to make a new frame at whatever size you want.
Similar to grouping, you can select existing elements on the canvas and contain them within a frame by pressing:
⌘ + Opt + G (Mac) or
Ctrl + Alt + G (Win).
If you wish to do the opposite, and remove the parent frame container, the keyboard shortcut is the same as un-grouping:
⌘ + Shift + G (Mac) or
Ctrl + Shift G (Win). Now let's dig into their unique features and uses.
Frame sizes are set independently from their child elements. If you reposition or scale child elements inside a frame, its bounds will not auto-adjust. If you want the dimensions of the frame to readjust to the contents, you can click the "Resize to Fit" button in the properties panel on the right.
It's also important to note that components in Figma behave in exactly the same way as frames. You can convert a frame into a component to re-use it in other places, and if you detach an existing component instance, you will see that it gets converted into a frame.
Frames and groups differ in their behavior when resized. As mentioned, groups will resize in the way you would expect a group of vectors to scale. A frame's bounds will be resized independently from its child elements; however, you can define constraints which affect the resizing behavior of those child elements relative to their parent frame. By default, these constraints are set to "Top" and "Left."
Setting up custom constraints can be really useful when you want items to maintain the size and position relative to the frame, which is usually the behavior you want when creating responsive components. The example below highlights the differences between groups, frames, and frames with specifically defined constraints.
Quick tip: If you want to ignore your constraints when resizing a frame, hold
⌘ (Mac) or
Ctrl (Win) when dragging the frame.
Because the bounds of a frame can be adjusted independently of its children, the "Clip Content" feature (accessible in the right-hand properties panel) can be used in conjunction with this in many different ways. Here are some common examples:
Layout grids are unique to frames and can be applied to any frame or component in your design. This is really useful because sometimes you'll want to have areas of your design that have their own independent grids. Resizing constraints in Figma can work in conjunction with the layout grids as well. In the example below, you can see that there is a 2-column grid on the top level frame, and a nested secondary frame for the tab bar, which has its own 3-column grid. With the constraints setup, as the top level frame changes in size, the resizing behavior of child elements happens relative to the layout grid.