主题定制

用 CSS 变量在全局或局部调整配色、圆角、时长与缓动,并适配深色模式。

#工作方式

所有可定制的值都是以 --elyri- 开头的 CSS 变量,默认值由 styles.css 定义在 :root 上。覆盖变量即可换肤,不需要改组件代码。

#全局覆盖

在 styles.css 之后加载的样式表里,于 :root 上重新声明变量:

theme.css
:root {
  --elyri-duration-base: 500ms;
  --elyri-ui-accent: #0f766e;
  --elyri-ui-accent-soft: rgb(15 118 110 / 12%);
  --elyri-ui-radius: 6px;
}

#局部覆盖

CSS 变量会向下继承,把它写在任意容器上,就只影响该容器内的组件。

theme.css
/* 只影响 .marketing 内部的组件 */
.marketing {
  --elyri-ui-accent: #e11d48;
  --elyri-duration-base: 700ms;
}

#动效变量(@elyri/motion)

变量默认值用途
--elyri-ease-outcubic-bezier(0.16, 1, 0.3, 1)入场、展开的缓动
--elyri-ease-in-outcubic-bezier(0.65, 0, 0.35, 1)往复、循环的缓动
--elyri-duration-fast200ms短时长
--elyri-duration-base400ms常规时长
--elyri-duration-slow800ms长时长

#UI 变量(@elyri/ui)

变量用途
--elyri-ui-accent强调色(主按钮、选中态)
--elyri-ui-accent-text强调色上的文字
--elyri-ui-accent-soft浅强调底色
--elyri-ui-text / --elyri-ui-muted正文 / 次要文字
--elyri-ui-surface / --elyri-ui-surface-muted表面 / 次级表面
--elyri-ui-border边框
--elyri-ui-danger / -success / -warning状态色
--elyri-ui-radius / --elyri-ui-radius-sm圆角
--elyri-ui-shadow / --elyri-ui-ring阴影 / 焦点环
--elyri-ui-duration / --elyri-ui-ease交互过渡

#深色模式

UI 变量默认通过 prefers-color-scheme 跟随系统明暗。如果站点有自己的主题开关,请在对应选择器下同时覆盖浅色与深色两套值,避免系统设置与站点主题不一致时出现混搭。

theme.css
/* 站点用 data-theme 切换明暗时,按同一选择器覆盖 */
:root[data-theme='light'] {
  --elyri-ui-text: #1a1d23;
  --elyri-ui-surface: #ffffff;
}
:root[data-theme='dark'] {
  --elyri-ui-text: #eef0f4;
  --elyri-ui-surface: #16191f;
}

#组件级定制

组件还有自己的变量(如 --elyri-gradient-colors),以及颜色、速度、尺寸等 props。props 会以内联样式写入,优先级高于样式表;WebGL 背景的配色只能通过 props 传入。每个组件可用的参数见组件页的「属性」表。

需要超出变量范围的改动?用 CLI 把源码拷进项目后直接修改。