Reflexjs
文档区块库指南GitHub
/
,

变体

使用变体 API 根据一个属性对组件应用复杂样式。


这可能是支持按钮或排版组件中的风格变化的一种便捷方法。

示例

在给定的以下 theme.js

theme.js
export 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?.bg
borderColor: 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" />
响应式样式伪选择器

© 2022 Reflexjs

文档区块库指南GitHub