AspectRatioBox
There are times when it comes in handy to build a box with a specific aspect ratio, given a certain width. This utility component applies CSS to ::before
and ::after
pseudo-elements in order to achieve set aspect ratios. (See CSS-Tricks for why this works.)
Note: AspectRatioBox and AspectRatioBoxBody components are both implemented using Block, and can take all the Block properties for styling.
Examples
It can be useful to wrap an image component in an AspectRatioBox, so content does not reflow as the image loads. This is useful when building UIs for mobile devices, to avoid content moving around as images load on poor network connections.
You could even build a calendar of square buttons with it, that resizes with the window width!
API
AspectRatioBox API
aspectRatio
number
= 1
Aspect ratio is width divided by height.
children
import
react.Node
as
import
Modifies the base element used to render the block.
react.ElementType
overrides
object
= {}
Block { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*
color
<T> | Array<<T>><string>
Accepts all themeable color properties (primary200
, etc.).
<T> | Array<<T>>string
backgroundAttachment
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment
<T> | Array<<T>>string
backgroundClip
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip
<T> | Array<<T>>string
backgroundColor
<T> | Array<<T>><string>
Accepts all themeable color properties (primary200
, etc.).
<T> | Array<<T>>string
backgroundImage
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-image
<T> | Array<<T>>string
backgroundOrigin
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin
<T> | Array<<T>>string
backgroundPosition
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-position
<T> | Array<<T>>string
backgroundRepeat
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat
<T> | Array<<T>>string
backgroundSize
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-size
<T> | Array<<T>>string
font
union
Accepts all themeable font properties (font200
, etc.).
One of string, Arraystring
alignContent
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-content
<T> | Array<<T>>One of "center", "start", "end", "flex-start", "flex-end", "normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "safe center", "unsafe center", "inherit", "initial", "unset"
alignItems
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-items
<T> | Array<<T>>One of "normal", "stretch", "center", "start", "end", "flex-start", "flex-end", "self-start", "self-end", "baseline", "first baseline", "last baseline", "safe center", "unsafe center", "inherit", "initial", "unset"
alignSelf
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-self
<T> | Array<<T>>One of "auto", "normal", "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "baseline", "first baseline", "last baseline", "stretch", "safe center", "unsafe center", "inherit", "initial", "unset"
flexDirection
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction
<T> | Array<<T>>One of "row", "row-reverse", "column", "column-reverse", "inherit", "initial", "unset"
display
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/display
<T> | Array<<T>>One of "block", "inline", "run-in", "flow", "flow-root", "table", "flex", "grid", "ruby", "block flow", "inline table", "flex run-in", "list-item", "list-item block", "list-item inline", "list-item flow", "list-item flow-root", "list-item block flow", "list-item block flow-root", "flow list-item block", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-cell", "table-column-group", "table-column", "table-caption", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container", "contents", "none", "inline-block", "inline-table", "inline-flex", "inline-grid", "inherit", "initial", "unset"
flex
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/flex
<T> | Array<<T>>One of number, string
grid
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid
<T> | Array<<T>>string
gridArea
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area
<T> | Array<<T>>string
gridAutoColumns
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-columns
<T> | Array<<T>>string
gridAutoFlow
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow
<T> | Array<<T>>One of "row", "column", "dense", "row dense", "column dense", "inherit", "initial", "unset"
gridAutoRows
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-rows
<T> | Array<<T>>string
gridColumn
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column
<T> | Array<<T>>string
gridColumnEnd
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-end
<T> | Array<<T>>string
gridColumnGap
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-gap
<T> | Array<<T>>One of 0, string
gridColumnStart
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start
<T> | Array<<T>>string
gridGap
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-gap
<T> | Array<<T>>One of 0, string
gridRow
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row
<T> | Array<<T>>string
gridRowEnd
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-end
<T> | Array<<T>>string
gridRowGap
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-gap
<T> | Array<<T>>One of 0, string
gridRowStart
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-start
<T> | Array<<T>>string
gridTemplate
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template
<T> | Array<<T>>string
gridTemplateAreas
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas
<T> | Array<<T>>string
gridTemplateColumns
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns
<T> | Array<<T>>string
gridTemplateRows
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows
<T> | Array<<T>>string
justifyContent
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content
<T> | Array<<T>>One of "center", "start", "end", "flex-start", "flex-end", "left", "right", "space-between", "space-around", "space-evenly", "stretch", "safe center", "unsafe center", "inherit", "initial", "unset"
justifyItems
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-items
<T> | Array<<T>>One of "auto", "normal", "stretch", "center", "start", "end", "flex-start", "flex-end", "self-start", "self-end", "left", "right", "baseline", "first baseline", "last baseline", "safe center", "unsafe center", "legacy right", "legacy left", "legacy center", "inherit", "initial", "unset"
justifySelf
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-self
<T> | Array<<T>>One of "auto", "normal", "stretch", "center", "start", "end", "flex-start", "flex-end", "self-start", "self-end", "left", "right", "baseline", "first baseline", "last baseline", "safe center", "unsafe center", "inherit", "initial", "unset"
position
<T> | Array<<T>><union>
<T> | Array<<T>>One of "static", "absolute", "relative", "fixed", "sticky"
width
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
minWidth
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
maxWidth
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
height
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
minHeight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
maxHeight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
overflow
<T> | Array<<T>><union>
<T> | Array<<T>>One of "visible", "hidden", "scroll", "scrollX", "scrollY", "auto", "inherit", "initial", "unset"
margin
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginTop
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginRight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginBottom
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginLeft
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
padding
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingTop
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingRight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingBottom
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingLeft
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
placeContent
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-content
<T> | Array<<T>>string
placeItems
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-items
<T> | Array<<T>>string
placeSelf
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-self
<T> | Array<<T>>string
flexWrap
<T> | Array<<T>><boolean>
<T> | Array<<T>>boolean
left
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
top
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
right
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
bottom
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
textOverflow
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow
<T> | Array<<T>>string
whiteSpace
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/white-space
<T> | Array<<T>>One of "normal", "nowrap", "pre", "pre-wrap", "pre-line", "break-spaces", "inherit", "initial", "unset"
AspectRatioBoxBody API
children
import
react.Node
as
import
Modifies the base element used to render the block.
react.ElementType
overrides
object
Block { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>*
color
<T> | Array<<T>><string>
Accepts all themeable color properties (primary200
, etc.).
<T> | Array<<T>>string
backgroundAttachment
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment
<T> | Array<<T>>string
backgroundClip
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip
<T> | Array<<T>>string
backgroundColor
<T> | Array<<T>><string>
Accepts all themeable color properties (primary200
, etc.).
<T> | Array<<T>>string
backgroundImage
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-image
<T> | Array<<T>>string
backgroundOrigin
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin
<T> | Array<<T>>string
backgroundPosition
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-position
<T> | Array<<T>>string
backgroundRepeat
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat
<T> | Array<<T>>string
backgroundSize
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-size
<T> | Array<<T>>string
font
union
Accepts all themeable font properties (font200
, etc.).
One of string, Arraystring
alignContent
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-content
<T> | Array<<T>>One of "center", "start", "end", "flex-start", "flex-end", "normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "safe center", "unsafe center", "inherit", "initial", "unset"
alignItems
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-items
<T> | Array<<T>>One of "normal", "stretch", "center", "start", "end", "flex-start", "flex-end", "self-start", "self-end", "baseline", "first baseline", "last baseline", "safe center", "unsafe center", "inherit", "initial", "unset"
alignSelf
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-self
<T> | Array<<T>>One of "auto", "normal", "center", "start", "end", "self-start", "self-end", "flex-start", "flex-end", "baseline", "first baseline", "last baseline", "stretch", "safe center", "unsafe center", "inherit", "initial", "unset"
flexDirection
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction
<T> | Array<<T>>One of "row", "row-reverse", "column", "column-reverse", "inherit", "initial", "unset"
display
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/display
<T> | Array<<T>>One of "block", "inline", "run-in", "flow", "flow-root", "table", "flex", "grid", "ruby", "block flow", "inline table", "flex run-in", "list-item", "list-item block", "list-item inline", "list-item flow", "list-item flow-root", "list-item block flow", "list-item block flow-root", "flow list-item block", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-cell", "table-column-group", "table-column", "table-caption", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container", "contents", "none", "inline-block", "inline-table", "inline-flex", "inline-grid", "inherit", "initial", "unset"
flex
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/flex
<T> | Array<<T>>One of number, string
grid
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid
<T> | Array<<T>>string
gridArea
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area
<T> | Array<<T>>string
gridAutoColumns
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-columns
<T> | Array<<T>>string
gridAutoFlow
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow
<T> | Array<<T>>One of "row", "column", "dense", "row dense", "column dense", "inherit", "initial", "unset"
gridAutoRows
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-rows
<T> | Array<<T>>string
gridColumn
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column
<T> | Array<<T>>string
gridColumnEnd
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-end
<T> | Array<<T>>string
gridColumnGap
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-gap
<T> | Array<<T>>One of 0, string
gridColumnStart
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start
<T> | Array<<T>>string
gridGap
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-gap
<T> | Array<<T>>One of 0, string
gridRow
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row
<T> | Array<<T>>string
gridRowEnd
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-end
<T> | Array<<T>>string
gridRowGap
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-gap
<T> | Array<<T>>One of 0, string
gridRowStart
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-start
<T> | Array<<T>>string
gridTemplate
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template
<T> | Array<<T>>string
gridTemplateAreas
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas
<T> | Array<<T>>string
gridTemplateColumns
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns
<T> | Array<<T>>string
gridTemplateRows
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows
<T> | Array<<T>>string
justifyContent
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content
<T> | Array<<T>>One of "center", "start", "end", "flex-start", "flex-end", "left", "right", "space-between", "space-around", "space-evenly", "stretch", "safe center", "unsafe center", "inherit", "initial", "unset"
justifyItems
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-items
<T> | Array<<T>>One of "auto", "normal", "stretch", "center", "start", "end", "flex-start", "flex-end", "self-start", "self-end", "left", "right", "baseline", "first baseline", "last baseline", "safe center", "unsafe center", "legacy right", "legacy left", "legacy center", "inherit", "initial", "unset"
justifySelf
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-self
<T> | Array<<T>>One of "auto", "normal", "stretch", "center", "start", "end", "flex-start", "flex-end", "self-start", "self-end", "left", "right", "baseline", "first baseline", "last baseline", "safe center", "unsafe center", "inherit", "initial", "unset"
position
<T> | Array<<T>><union>
<T> | Array<<T>>One of "static", "absolute", "relative", "fixed", "sticky"
width
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
minWidth
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
maxWidth
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
height
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
minHeight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
maxHeight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
overflow
<T> | Array<<T>><union>
<T> | Array<<T>>One of "visible", "hidden", "scroll", "scrollX", "scrollY", "auto", "inherit", "initial", "unset"
margin
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginTop
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginRight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginBottom
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
marginLeft
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
padding
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingTop
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingRight
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingBottom
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
paddingLeft
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
placeContent
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-content
<T> | Array<<T>>string
placeItems
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-items
<T> | Array<<T>>string
placeSelf
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-self
<T> | Array<<T>>string
flexWrap
<T> | Array<<T>><boolean>
<T> | Array<<T>>boolean
left
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
top
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
right
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
bottom
<T> | Array<<T>><union>
<T> | Array<<T>>One of 0, string
textOverflow
<T> | Array<<T>><string>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow
<T> | Array<<T>>string
whiteSpace
<T> | Array<<T>><union>
available values: https://developer.mozilla.org/en-US/docs/Web/CSS/white-space
<T> | Array<<T>>One of "normal", "nowrap", "pre", "pre-wrap", "pre-line", "break-spaces", "inherit", "initial", "unset"