data- attributes
If the value that controls dynamic styles is a boolean or a known small union of values, use data- attributes.
First, define data- attributes on the component. In the example below:
data-disabled
represents booleandisabled
attribute.disabled || undefined
is required to not adddata-disabled="false"
attribute whendisabled
isfalse
and allow styling with&[data-disabled]
selector.data-orientation
representsorientation
prop which can be eitherhorizontal
orvertical
. In styles you can reference it with&[data-orientation="horizontal"]
selector.
Then add styles in .module.css
file:
Inline styles
If the value that controls dynamic styles is not represented by a known union of values (for example, value can be any valid CSS color), then you can use inline styles or style props:
If you need to customize a deeply nested element, use styles prop instead:
Note that, it is not possible use pseudo-classes (for example, :hover
, :first-of-type
)
and media queries inside the styles
prop. For this purpose, use CSS variables
with classNames prop.
CSS variables
If none of the methods above works for you (for example, you want to customize, :hover
styles based on component prop), use CSS variables
with classNames prop.
First, define CSS variables in style
or styles
prop:
Then reference them in .module.css
file: