Skip to main content
Version: 0.80

Layout Props

info

More detailed examples about those properties can be found on the Layout with Flexbox page.

Example

The following example shows how different properties can affect or shape a React Native layout. You can try for example to add or remove squares from the UI while changing the values of the property flexWrap.


Reference

Props

alignContent

alignContent controls how rows align in the cross direction, overriding the alignContent of the parent.

See MDN CSS Reference for more details.

TypeRequired
enum('flex-start', 'flex-end', 'center', 'stretch', 'space-between', 'space-around', 'space-evenly')No

alignItems

alignItems aligns children in the cross direction. For example, if children are flowing vertically, alignItems controls how they align horizontally. It works like align-items in CSS (default: stretch).

See MDN CSS Reference for more details.

TypeRequired
enum('flex-start', 'flex-end', 'center', 'stretch', 'baseline')No

alignSelf

alignSelf controls how a child aligns in the cross direction, overriding the alignItems of the parent. It works like align-self in CSS (default: auto).

See MDN CSS Reference for more details.

TypeRequired
enum('auto', 'flex-start', 'flex-end', 'center', 'stretch', 'baseline')No

aspectRatio

Aspect ratio controls the size of the undefined dimension of a node.

  • On a node with a set width/height, aspect ratio controls the size of the unset dimension
  • On a node with a set flex basis, aspect ratio controls the size of the node in the cross axis if unset
  • On a node with a measure function, aspect ratio works as though the measure function measures the flex basis
  • On a node with flex grow/shrink, aspect ratio controls the size of the node in the cross axis if unset
  • Aspect ratio takes min/max dimensions into account

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

borderBottomWidth

borderBottomWidth works like border-bottom-width in CSS.

See MDN CSS Reference for more details.

TypeRequired
numberNo

borderEndWidth

When direction is ltr, borderEndWidth is equivalent to borderRightWidth. When direction is rtl, borderEndWidth is equivalent to borderLeftWidth.

TypeRequired
numberNo

borderLeftWidth

borderLeftWidth works like border-left-width in CSS.

See MDN CSS Reference for more details.

TypeRequired
numberNo

borderRightWidth

borderRightWidth works like border-right-width in CSS.

See MDN CSS Reference for more details.

TypeRequired
numberNo

borderStartWidth

When direction is ltr, borderStartWidth is equivalent to borderLeftWidth. When direction is rtl, borderStartWidth is equivalent to borderRightWidth.

TypeRequired
numberNo

borderTopWidth

borderTopWidth works like border-top-width in CSS.

See MDN CSS Reference for more details.

TypeRequired
numberNo

borderWidth

borderWidth works like border-width in CSS.

See MDN CSS Reference for more details.

TypeRequired
numberNo

bottom

bottom is the number of logical pixels to offset the bottom edge of this component.

It works similarly to bottom in CSS, but in React Native you must use points or percentages. Ems and other units are not supported.

See MDN CSS Reference for more details of how bottom affects layout.

TypeRequired
number, stringNo

boxSizing

boxSizing defines how the element's various sizing props (width, height, minWidth, minHeight, etc.) are computed. If boxSizing is border-box, these sizes apply to the border box of the element. If it is content-box, they apply to the content box of the element. The default value is border-box. The web documentation is a good source of information if you wish to learn more about how this prop works.

TypeRequired
enum('border-box', 'content-box')No

columnGap

columnGap works like column-gap in CSS. Only pixel units are supported in React Native.

See MDN CSS Reference for more details.

TypeRequired
numberNo

direction

direction specifies the directional flow of the user interface. The default is inherit, except for root node which will have value based on the current locale.

See MDN CSS Reference for more details.

TypeRequired
enum('inherit', 'ltr', 'rtl')No

display

display sets the display type of this component.

It works similarly to display in CSS but only supports the values 'flex', 'none', and 'contents'. The default is flex.

TypeRequired
enum('none', 'flex', 'contents')No

end

When the direction is ltr, end is equivalent to right. When the direction is rtl, end is equivalent to left.

This style takes precedence over the left and right styles.

TypeRequired
number, stringNo

flex

In React Native flex does not work the same way that it does in CSS. flex is a number rather than a string, and it works according to the Yoga layout engine.

When flex is a positive number, it makes the component flexible, and it will be sized proportional to its flex value. So a component with flex set to 2 will take twice the space as a component with flex set to 1. flex: <positive number> equates to flexGrow: <positive number>, flexShrink: 1, flexBasis: 0.

When flex is 0, the component is sized according to width and height, and it is inflexible.

When flex is -1, the component is normally sized according to width and height. However, if there's not enough space, the component will shrink to its minWidth and minHeight.

flexGrow, flexShrink, and flexBasis work the same as in CSS.

TypeRequired
numberNo

flexBasis

flexBasis is an axis-independent way of providing the default size of an item along the main axis. Setting the flexBasis of a child is similar to setting the width of that child if its parent is a container with flexDirection: row or setting the height of a child if its parent is a container with flexDirection: column. The flexBasis of an item is the default size of that item, the size of the item before any flexGrow and flexShrink calculations are performed.

TypeRequired
number, stringNo

flexDirection

flexDirection controls which directions children of a container go. row goes left to right, column goes top to bottom, and you may be able to guess what the other two do. It works like flex-direction in CSS, except the default is column.

See MDN CSS Reference for more details.

TypeRequired
enum('row', 'row-reverse', 'column', 'column-reverse')No

flexGrow

flexGrow describes how any space within a container should be distributed among its children along the main axis. After laying out its children, a container will distribute any remaining space according to the flex grow values specified by its children.

flexGrow accepts any floating point value >= 0, with 0 being the default value. A container will distribute any remaining space among its children weighted by the children’s flexGrow values.

TypeRequired
numberNo

flexShrink

flexShrink describes how to shrink children along the main axis in the case in which the total size of the children overflows the size of the container on the main axis. flexShrink is very similar to flexGrow and can be thought of in the same way if any overflowing size is considered to be negative remaining space. These two properties also work well together by allowing children to grow and shrink as needed.

flexShrink accepts any floating point value >= 0, with 0 being the default value. A container will shrink its children weighted by the children’s flexShrink values.

TypeRequired
numberNo

flexWrap

flexWrap controls whether children can wrap around after they hit the end of a flex container. It works like flex-wrap in CSS (default: nowrap).

Note it does not work anymore with alignItems: stretch (the default), so you may want to use alignItems: flex-start for example (breaking change details: https://github.com/facebook/react-native/releases/tag/v0.28.0).

See MDN CSS Reference for more details.

TypeRequired
enum('wrap', 'nowrap', 'wrap-reverse')No

gap

gap works like gap in CSS. Only pixel units are supported in React Native.

See MDN CSS Reference for more details.

TypeRequired
numberNo

height

height sets the height of this component.

It works similarly to height in CSS, but in React Native you must use points or percentages. Ems and other units are not supported.

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

inset

note

inset is only available on the New Architecture

Setting inset has the same effect as setting each of top, bottom, right and left props.

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

insetBlock

note

insetBlock is only available on the New Architecture

Equivalent to top and bottom.

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

insetBlockEnd

note

insetBlockEnd is only available on the New Architecture

Equivalent to bottom.

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

insetBlockStart

note

insetBlockStart is only available on the New Architecture

Equivalent to top.

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

insetInline

note

insetInline is only available on the New Architecture

Equivalent to right and left.

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

insetInlineEnd

note

insetInlineEnd is only available on the New Architecture

When direction is ltr, insetInlineEnd is equivalent to right. When direction is rtl, insetInlineEnd is equivalent to left.

See MDN CSS Reference for more details.

TypeRequired
number, stringNo

insetInlineStart

note

insetInlineStart is only available on the New Architecture

When direction is ltr, insetInlineStart is equivalent to left. When direction is rtl, insetInlineStart is equivalent to right.

See