# Layout
The Layout is the content container inside a View. There should be exactly one `layout` per `view`. Its height is calculated automatically based on the device type, orientation, and whether a title bar is present. It can arrange content horizontally (`layout--row`) or vertically (`layout--col`), with alignment and stretch modifiers. For organizing content inside it, use `flex`, `columns`, or `grid`.
Use one `layout` per `view`. Organize content inside it with `flex`, `columns`, or `grid`.
Don't nest `layout` inside `layout`. There should be exactly one `layout` per `view`.
### What Goes Inside Layout
Layout is the main content wrapper inside a View. It defines the available space. Its direct children are usually Columns, Grid, or Flex.
#### Three ways to lay out content
#### Grid
Use when you need a strict grid: define column count and spans, so items align to a consistent rhythm. Good for Swiss-style layouts where everything lines up to a fixed grid.
Go to[Grid](/framework/docs/grid)
#### Flex
Use when you want flexible arrangements where items size by content (width/height). You can use Flex alone for simpler layouts, or nest it inside Grid for per-cell flexibility.
Go to[Flex](/framework/docs/flex)
#### Columns
Use when you have lots of same-type data and want to display as few or as many items as there are, with the Columns system handling the layout. See the Columns page for details.
Go to[Columns](/framework/docs/columns)
You can use multiple of each: multiple Columns components, multiple Grids, multiple Flex containers. You can mix them. The Layout modifiers (`layout--row`, `layout--col`, alignment, stretch) control how these direct children are arranged within the Layout space.
1
2
3
4
5
6
7
8
9
10
11
12
#### Nesting
These components can be nested. For example, you might put a Grid inside Layout, give that Grid a column count, and place Flex containers inside each grid cell. Inside each Flex you then place your actual content (items, text, etc.). Layout arranges the top-level Grid(s); the Grid arranges its cells; the Flex arranges items within each cell.
### Base Structure
The Layout system provides two fundamental ways to organize content: horizontal and vertical arrangements.
These base structures are the building blocks for more complex layouts.
#### Row Layout
The `layout layout--row` classes create a horizontal layout.
Items are arranged horizontally from left to right, with center alignment as the default positioning.
Item 1
Item 2
Item 3
LayoutHorizontal
#### Column Layout
The `layout layout--col` classes create a vertical layout.
Items are arranged vertically from top to bottom, with center alignment as the default positioning.
Item 1
Item 2
Item 3
LayoutVertical
### Alignment Modifiers
Once you've chosen a base layout structure, you can apply these modifier classes to control how items are aligned
within their container. The system provides both directional alignment (top/bottom/left/right) and centering options.
#### Horizontal Alignment
Use `layout--left`, `layout--center-x`, or `layout--right` to control horizontal alignment.
Left
LayoutLeft Alignment
#### Vertical Alignment
Use `layout--top`, `layout--center-y`, or `layout--bottom` to control vertical alignment.
Top
LayoutTop Alignment
#### Center Alignment
Use `layout--center` to center items both horizontally and vertically,
or use `layout--center-x` and `layout--center-y` for individual axis control.
Center
LayoutCenter Alignment
### Stretch Modifiers
Stretch modifiers allow you to control how child elements fill the available space within a layout.
You can apply these modifiers either to the layout container or to individual child elements.
#### Container Stretch
Use `layout--stretch` to make all children stretch in both directions.
You can also use `layout--stretch-x` and `layout--stretch-y` for individual axis control.
These modifiers work with both row and column layouts.
#### Row Layout Stretch
Examples of stretch behavior in row layouts. Use `layout--stretch` for both directions, `layout--stretch-x` for horizontal, or `layout--stretch-y` for vertical stretch.
Item 1
Item 2
Item 3
Row LayoutFull Stretch
Item 1
Item 2
Item 3
Row LayoutHorizontal Stretch
Item 1
Item 2
Item 3
Row LayoutVertical Stretch
#### Column Layout Stretch
Examples of stretch behavior in column layouts. The same modifiers work consistently regardless of layout direction.
Item 1
Item 2
Item 3
Column LayoutFull Stretch
Item 1
Item 2
Item 3
Column LayoutHorizontal Stretch
Item 1
Item 2
Item 3
Column LayoutVertical Stretch
#### Child Element Stretch
Use `stretch-x` and `stretch-y` classes on individual elements to control their stretch behavior
within row or column layouts.
Item 1
Item 2 (stretched)
Item 3
LayoutRow + Individual Stretch
Item 1
Stretched Item
Item 3
Item 1
Item 2
(stretched)
Item 3
LayoutColumn + Individual Stretch
Item 1
Stretched Item
Item 3
Previous
[View Show your plugin in different sizes with Mashup view containers](/framework/docs/view)
Next
[Title Bar Standardized title bar with plugin information and instance details](/framework/docs/title_bar)