变体
使用变体 API 根据一个属性对组件应用复杂样式。
这可能是支持按钮或排版组件中的风格变化的一种便捷方法。
示例
在给定的以下 theme.js
中
theme.jsexport default {colors: {primary: "#0cf",secondary: "#c0f",text: "#111",},fontSizes: {xs: "0.75rem",sm: "0.875rem",md: "1rem",},space: {0: "0",1: "0.25rem",2: "0.5rem",3: "0.75rem",},text: {caps: {textDecoration: "uppercase",},},button: {color: "text",fontSize: "md",primary: {bg: "primary",},secondary: {bg: "secondary",},lg: {fontSize: 3,},sm: {fontSize: 1,},},}
使用 variant
属性对组件应用变体样式。
<button variant="button.primary" /><a variant="button.secondary" />
变体组合
变体样式可以组合(从左到右)。
Reflexjs 将使用嵌套组合自动组合您的样式。按使用它们的顺序合并样式。
<button variant="button.primary.lg" /><button variant="button.sm" />
多个变体
您还可以将多个变体传递给 variant
属性,以实现更高级的组合。
<button variant="button.primary.sm text.caps" />
可调用变体
变体可以是可调用/函数。这对于基于组件样式创建动态变体很有用。
下面是如何使用变体创建 outline
按钮。
const theme = {button: {primary: {bg: "primary",},secondary: {bg: "secondary",},outline: (theme, styles) => {color: styles?.bgborderColor: styles?.bg},},}// style?.bg returns "primary" with button.primary.outline.<button variant="button.primary.outline" />// style?.bg returns "secondary" with button.secondary.outline.<button variant="button.secondary.outline" />
覆盖变体样式
要覆盖变体样式,只需传递样式属性即可。
<button variant="button.primary" bg="tomato" />