自定义 & 主题
定制允许我们使用主题来个性化 UI 的外观。
Sira 附带了默认主题,您可以使用它来构建您的网站或应用程序,而无需进行自定义。 在本节中,您将了解如何自定义主题。
主题是一组属性,用于定制您的 sira 外观。
您还可以创建自己的主题或删除内置主题。
要使用此功能,请转到 tailwind.config.js
:
/** @type {import('tailwindcss').Config} */
module.exports = {
plugins: [
require('@sira-ui/tailwind')({
...config,
}),
],
};
主题
使用 themes
数组属性控制所有 sira 主题。
主题对象
themes
数组属性接受这样的对象值:
name
此主题的名称,将在根元素属性data-theme
中用于在主题之间切换。colorScheme
这个主题的实际颜色明暗方案,light
或dark
,决定了什么内置主题将被合并到其中。colors
这个主题的颜色,选择您自己的(会与默认内置颜色合并),sira 将为这个颜色名称生成50-1100
调色板,为样式生成对应的类名。prefersColorScheme
布尔属性,在指定的colorScheme
中设置首选主题,将在此类媒体查询@media (prefers-color-scheme:${theme.colorScheme || "light"})
中启用首选主题。(仅适用于一个主题,多个主题启用此属性将仅适用于最后一个主题。)
module.exports = {
plugins: [
require('@sira-ui/tailwind')({
themes: [
{
name: 'custom',
colorScheme: 'dark' | 'light',
prefersColorScheme: true,
colors: {
primary: '#634673',
secondary: '#583533',
},
},
],
}),
],
};
颜色
Sira 使用RadixUI Colors (opens in a new tab)作为默认主题颜色的基础概念,您可以看到如何使用下面的颜色。
我们遵循以下颜色参考:
刻度 | 含义 |
---|---|
50 | App background |
100 | Subtle background |
200 | UI element background |
300 | Hovered UI element background |
400 | Active / Selected UI element background |
500 | Subtle borders and separators |
600 | UI element border and focus rings |
700 | Hovered UI element border |
800 | Solid backgrounds |
900 | Hovered solid backgrounds |
1000 | Low-contrast text |
1100 | High-contrast text |
如果您需要有关如何使用颜色的更多信息,可以查看RadixUI 颜色用法 (opens in a new tab)。
50~1100 的刻度在“亮”或“暗”模式下都能很好地工作 举个例子: 应用程序背景颜色由
var(--sira-colors-bw-50)
css 变量控制,在暗模式下为“#000”,但在亮模式下,var(--sira-colors-bw-50)
css 变量为“#FFF”。
这里我们列出了我们的内置颜色:
内置色板
颜色bw
表示从黑色到白色(或从白色到黑色,取决于颜色明暗模式)的调色板,与
其他颜色是,它在白色和黑色之间有一种明显的突变,这是为了满足Radix颜色参考规范。
因此,如果您在 sira 主题配置中添加一些自定义颜色(只需提供一个中间颜色值,sira 将为您处理其他颜色),如下所示。
module.exports = {
plugins: [
require('@sira-ui/tailwind')({
themes: [
{
name: 'light',
colorScheme: 'light',
colors: {
yourowncolorname: '#7118e0',
},
},
],
}),
],
};
实际上,Sira会计算你给出的颜色值(主要使用色调和饱和度),以自动生成一个调色板来满足Radix 颜色参考规范。
或者,您可以通过下面的一系列颜色(从 50 到 1100 的 12 个十六进制阴影)逐一定制整个调色板。
module.exports = {
plugins: [
require('@sira-ui/tailwind')({
themes: [
{
name: 'light',
colorScheme: 'light',
colors: {
yourowncolorname: [
// 填充这些颜色值(从50到1100的12个十六进制色值)
//或者只给出一个单色十六进制字符串而不是数组。(Sira将通过该单个值为你生成12个色值)
'#fffcfc',
'#fff8f8',
'#ffefef',
'#ffe5e5',
'#fdd8d8',
'#f9c6c6',
'#f3aeaf',
'#eb9091',
'#e5484d',
'#dc3d43',
'#cd2b31',
'#381316',
],
},
},
],
}),
],
};
您将在代码中获得自定义颜色的 Tailwind 类名,如下所示
<div class="bg-primary-300 text-primary-800">Primary</div>
此外,您可以使用自定义颜色名称作为类,为 sira 组件应用主题颜色,如下所示
<button class="btn solid primary">Primary</button>
内置主题
我们提供一些默认的内置主题,即light
& dark
。
要自定义它们,可以使用themes
数组属性覆盖其名称,如下所示
module.exports = {
plugins: [
require('@sira-ui/tailwind')({
themes: [
{
name: 'light',
colorScheme: 'light',
colors: {
success: '#7118e0',
danger: '#5955f1',
},
},
{
name: 'dark',
colorScheme: 'dark',
colors: {
success: '#7118e0',
danger: '#5955f1',
},
},
],
}),
],
};
禁用主题
要删除主题,可以使用 excludedThemes
数组属性:
module.exports = {
plugins: [
require('@sira-ui/tailwind')({
excludedThemes: ['dark', 'light', 'whateverTheme'],
}),
],
};
类名前缀
要为每个 Sira 组件类添加前缀,可以使用 prefix
字符串属性:
默认为无前缀
module.exports = {
plugins: [
require('@sira-ui/tailwind')({
prefix: 'prefix-',
}),
],
};
现在,组件类将如下所示:
之前 | 之后 |
---|---|
.btn | .prefix-btn |
.input | .prefix-input |