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-disabledrepresents booleandisabledattribute.disabled || undefinedis required to not adddata-disabled="false"attribute whendisabledisfalseand allow styling with&[data-disabled]selector.data-orientationrepresentsorientationprop which can be eitherhorizontalorvertical. 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: