Skip to content

Commit

Permalink
Add flex basis grow shrink documentation (#1607)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: #1607

tsia

Reviewed By: yungsters

Differential Revision: D54783674

fbshipit-source-id: 95530db0b129d8f0fb3e677430b9bfbf0662f590
  • Loading branch information
joevilches authored and facebook-github-bot committed Mar 12, 2024
1 parent 25f94f8 commit a0a09b4
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions website-next/docs/examples/flex-basis-grow-shrink.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,64 @@
sidebar_position: 5
---

import Playground from '@site/src/components/Playground';

# Flex Basis, Grow, and Shrink

**Flex basis**: is an axis-independent way of providing the default size of an item
along the main axis. Setting the flex basis of a child is similar to setting the `width` of that
child if its parent is a container with `flex direction: row` or setting the `height` of a child
if its parent is a container with `flex direction: column`. The flex basis of an item is the
default size of that item, the size of the item before any flex grow and flex shrink
calculations are performed.

<Playground code={`<Layout config={{useWebDefaults: false}}>
<Node
style={{
width: 200,
height: 200,
padding: 10,
}}>
<Node style={{margin: 5, flexBasis: 50}} />
</Node>
</Layout>`} />

**Flex grow**: 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.

Flex grow 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 child’s flex grow value.

<Playground code={`<Layout config={{useWebDefaults: false}}>
<Node
style={{
width: 200,
height: 200,
padding: 10,
}}>
<Node style={{margin: 5, flexGrow: 0.25}} />
<Node style={{margin: 5, flexGrow: 0.75}} />
</Node>
</Layout>`} />

**Flex shrink**: describes how to shrink children along the main axis in the
case that the total size of the children overflow the size of the container on the main axis.
flex shrink is very similar to flex grow 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.

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

<Playground code={`<Layout config={{useWebDefaults: false}}>
<Node
style={{
width: 200,
height: 200,
padding: 10,
}}>
<Node style={{margin: 5, flexShrink: 5, height: 150}} />
<Node style={{margin: 5, flexShrink: 10, height: 150}} />
</Node>
</Layout>`} />

0 comments on commit a0a09b4

Please sign in to comment.