2024-03-08 14:13:55 -08:00
|
|
|
|
---
|
|
|
|
|
sidebar_position: 5
|
|
|
|
|
---
|
|
|
|
|
|
2024-03-12 11:31:46 -07:00
|
|
|
|
import Playground from '@site/src/components/Playground';
|
|
|
|
|
|
2024-03-08 14:13:55 -08:00
|
|
|
|
# Flex Basis, Grow, and Shrink
|
2024-03-12 11:31:46 -07:00
|
|
|
|
|
|
|
|
|
**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>`} />
|