样式系统分三层,优先级从低到高:
全局基础变量 (--blocks-*) ← 在 :root 中定义,影响所有组件
组件级变量 (--mewx-cms-*) ← 在 .mewx-cms-{component} 类中定义,仅影响该组件
组件内部的 rgb(var(--mewx-cms-*)) ← TSX 中实际使用的值
你只需要修改前两层,组件内部自动响应变化。
最终系统只使用 CMSRender 这一个组件,所有子组件由数据驱动渲染:
<CMSRender lang="zh" data={cmsData} />
由于无法给内部组件传递 className prop,覆盖样式有三种方式。
在你的 globals.css 中覆盖 --blocks-* 变量,所有组件同步变化:
/* 改变品牌主色 → 所有按钮、链接、强调色全部变化 */
--blocks-primary: 59 130 246;
--blocks-primary-light: 96 165 250;
--blocks-primary-lighter: 191 219 254;
--blocks-primary-lightest: 239 246 255;
--blocks-primary-dark: 37 99 235;
--blocks-bg-page: 15 23 42;
--blocks-bg-card: 30 41 59;
/* 改变渐变 → 所有 CTA 按钮、Hero 背景同步变化 */
--blocks-gradient-primary: linear-gradient(135deg, rgb(59, 130, 246), rgb(96, 165, 250));
适合场景:整站换主题色、亮/暗模式切换。
每个组件都有一个 .mewx-cms-{component} 根类,在 CSS 中直接覆盖该类的变量:
/* 只改 Features 功能区的背景和卡片阴影,不影响其他组件 */
--mewx-cms-features-bg: 15 23 42;
--mewx-cms-features-card-bg: 30 41 59;
--mewx-cms-features-card-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
/* 只改 Header 的 CTA 按钮背景 */
--mewx-cms-header-cta-bg: linear-gradient(135deg, rgb(139, 92, 246), rgb(59, 130, 246));
适合场景:针对某个特定区块做定制,例如深色 Footer、浅色 Hero。
用父容器包裹 CMSRender,变量只在该容器内生效:
<div className="product-page">
<CMSRender lang="zh" data={productData} />
<div className="blog-page">
<CMSRender lang="zh" data={blogData} />
.product-page .mewx-cms-features {
--mewx-cms-features-bg: 239 246 255;
--mewx-cms-features-badge-bg: 219 234 254;
.blog-page .mewx-cms-features {
--mewx-cms-features-bg: 240 253 244;
--mewx-cms-features-badge-bg: 220 252 231;
适合场景:多页面不同风格、A/B 测试、多租户系统。
--blocks-text-heading: 248 250 252;
--blocks-text-body: 203 213 225;
--blocks-text-muted: 148 163 184;
--blocks-text-light: 100 116 139;
--blocks-bg-page: 15 23 42;
--blocks-bg-section: 30 41 59;
--blocks-bg-card: 30 41 59;
--blocks-bg-card-hover: 51 65 85;
--blocks-border: 51 65 85;
--blocks-border-hover: var(--blocks-primary);
--blocks-shadow-card: 0 2px 12px rgba(0, 0, 0, 0.3);
--blocks-shadow-card-hover: 0 12px 30px rgba(0, 0, 0, 0.4);
所有颜色变量使用 空格分隔的 RGB 值,不带 rgb() 包裹:
--blocks-primary: 59 130 246;
--blocks-primary: #3b82f6;
--blocks-primary: rgb(59, 130, 246);
| 变量名 | 用途 | 默认值 (亮色) |
|---|
--blocks-text-heading | 标题文字 | 15 23 42 |
--blocks-text-body | 正文文字 | 51 65 85 |
--blocks-text-muted | 辅助文字 | 100 116 139 |
--blocks-text-light | 最浅文字 | 148 163 184 |
| 变量名 | 用途 | 默认值 |
|---|
--blocks-primary | 主色 | 219 87 153 |
--blocks-primary-light | 浅色变体 | 236 114 175 |
--blocks-primary-lighter | 更浅变体 | 251 207 232 |
--blocks-primary-lightest | 最浅变体 | 253 242 248 |
--blocks-primary-dark | 深色变体 | 199 55 125 |
| 变量名 | 用途 | 默认值 |
|---|
--blocks-accent | 强调色 | 139 92 246 |
--blocks-accent-light | 浅色变体 | 167 139 250 |
--blocks-accent-lightest | 最浅变体 | 245 243 255 |
| 变量名 | 用途 | 默认值 |
|---|
--blocks-bg-page | 页面背景 | 255 255 255 |
--blocks-bg-section | 区块背景 | 248 250 252 |
--blocks-bg-card | 卡片背景 | 255 255 255 |
--blocks-bg-card-hover | 卡片悬停背景 | 253 242 248 |
| 变量名 | 用途 | 默认值 |
|---|
--blocks-border | 默认边框 | 241 245 249 |
--blocks-border-hover | 悬停边框 | 251 207 232 |
| 变量名 | 大小 | 默认值 |
|---|
--blocks-radius-sm | 小 | 0.5rem |
--blocks-radius-md | 中 | 1rem |
--blocks-radius-lg | 大 | 1.5rem |
--blocks-radius-xl | 超大 | 2rem |
--blocks-radius-2xl | 特大 | 2.5rem |
--blocks-radius-full | 圆形 | 9999px |
| 变量名 | 用途 |
|---|
--blocks-gradient-primary | 主色渐变(CTA 按钮、Header) |
--blocks-gradient-accent | 强调色渐变 |
--blocks-gradient-hero | Hero 区背景渐变 |
--blocks-gradient-text | 渐变文字 |
--blocks-gradient-glow | 光晕效果渐变 |
每个组件类名及其可覆盖变量如下:
| 变量 | 说明 |
|---|
--mewx-cms-header-bg | 背景色 |
--mewx-cms-header-text | 标题文字色 |
--mewx-cms-header-body-text | 正文文字色 |
--mewx-cms-header-highlight-text | 高亮文字色 |
--mewx-cms-header-border | 底部边框色 |
--mewx-cms-header-cta-bg | CTA 按钮背景(渐变) |
--mewx-cms-header-cta-shadow | CTA 按钮阴影 |
--mewx-cms-header-tip-icon-bg | 提示图标背景色 |
--mewx-cms-header-media-bg | 媒体元素背景色 |
| 变量 | 说明 |
|---|
--mewx-cms-media-hero-heading-gradient | 标题渐变 |
--mewx-cms-media-hero-muted-text | 辅助文字色 |
--mewx-cms-media-hero-cta-bg | CTA 按钮背景 |
--mewx-cms-media-hero-cta-shadow | CTA 按钮阴影 |
--mewx-cms-media-hero-media-bg | 媒体区背景色 |
| 变量 | 说明 |
|---|
--mewx-cms-tab-carousel-heading-text | 标题文字色 |
--mewx-cms-tab-carousel-tab-active-bg | 选中标签背景 |
--mewx-cms-tab-carousel-tab-inactive-bg | 未选中标签背景 |
--mewx-cms-tab-carousel-tab-inactive-text | 未选中标签文字 |
--mewx-cms-tab-carousel-panel-bg | 内容面板背景 |
--mewx-cms-tab-carousel-panel-shadow | 内容面板阴影 |
--mewx-cms-tab-carousel-cta-bg | CTA 按钮背景 |
| 变量 | 说明 |
|---|
--mewx-cms-features-bg | 区块背景色 |
--mewx-cms-features-badge-bg | 标签背景色 |
--mewx-cms-features-badge-text | 标签文字色 |
--mewx-cms-features-heading-text | 标题文字色 |
--mewx-cms-features-gradient-text | 渐变文字渐变值 |
--mewx-cms-features-card-bg | 卡片背景色 |
--mewx-cms-features-card-shadow | 卡片阴影 |
--mewx-cms-features-icon-bg | 图标背景色 |
| 变量 | 说明 |
|---|
--mewx-cms-feature-list-bg | 区块背景色 |
--mewx-cms-feature-list-subtitle-text | 副标题文字色 |
--mewx-cms-feature-list-heading-text | 标题文字色 |
--mewx-cms-feature-list-card-bg | 卡片背景色 |
--mewx-cms-feature-list-card-border | 卡片边框色 |
--mewx-cms-feature-list-card-radius | 卡片圆角 |
--mewx-cms-feature-list-card-shadow | 卡片阴影 |
--mewx-cms-feature-list-card-hover-shadow | 卡片悬停阴影 |
--mewx-cms-feature-list-icon-bg | 图标背景色 |
--mewx-cms-feature-list-title-text | 卡片标题色 |
--mewx-cms-feature-list-desc-text | 卡片描述色 |
| 变量 | 说明 |
|---|
--mewx-cms-carousel-heading-text | 标题文字色 |
--mewx-cms-carousel-card-bg | 卡片背景色 |
--mewx-cms-carousel-nav-bg | 导航按钮背景 |
--mewx-cms-carousel-indicator-active | 指示器激活色 |
--mewx-cms-carousel-indicator-inactive | 指示器默认色 |
| 变量 | 说明 |
|---|
--mewx-cms-showcase-heading-text | 标题文字色 |
--mewx-cms-showcase-link-text | 链接文字色 |
--mewx-cms-showcase-media-bg | 媒体背景色 |
--mewx-cms-showcase-glow-bg | 光晕背景渐变 |
| 变量 | 说明 |
|---|
--mewx-cms-slideshow-heading-text | 标题文字色 |
--mewx-cms-slideshow-item-active-bg | 激活项背景色 |
--mewx-cms-slideshow-item-active-text | 激活项文字色 |
--mewx-cms-slideshow-circle-active-bg | 激活圆圈背景 |
--mewx-cms-slideshow-circle-inactive-bg | 未激活圆圈背景 |
| 变量 | 说明 |
|---|
--mewx-cms-card-scroll-fade-bg | 边缘渐隐背景色 |
--mewx-cms-card-scroll-card-bg | 卡片背景色 |
--mewx-cms-card-scroll-card-shadow | 卡片阴影 |
--mewx-cms-card-scroll-text | 内容文字色 |
--mewx-cms-card-scroll-author-name-text | 作者名文字色 |
| 变量 | 说明 |
|---|
--mewx-cms-cta-bg | 区块背景色 |
--mewx-cms-cta-heading-text | 标题文字色 |
--mewx-cms-cta-blob-accent | 装饰光晕颜色 |
| 变量 | 说明 |
|---|
--mewx-cms-footer-section-bg | 背景渐变 |
--mewx-cms-footer-section-heading-text | 标题文字色 |
--mewx-cms-footer-section-cta-bg | CTA 按钮背景 |
| 变量 | 说明 |
|---|
--mewx-cms-steps-heading-text | 标题文字色 |
--mewx-cms-steps-card-bg | 步骤卡片背景 |
--mewx-cms-steps-number-bg | 序号背景色 |
--mewx-cms-steps-number-text | 序号文字色 |
| 变量 | 说明 |
|---|
--mewx-cms-steps-gradient-heading-text | 标题文字色 |
--mewx-cms-steps-gradient-card-bg | 卡片背景色 |
--mewx-cms-steps-gradient-number-text | 序号文字色 |
--mewx-cms-steps-gradient-item-hover-heading-text | 悬停标题色 |
| 变量 | 说明 |
|---|
--mewx-cms-how-to-use-bg | 区块背景色 |
--mewx-cms-how-to-use-heading-text | 标题文字色 |
--mewx-cms-how-to-use-step-text | 步骤编号颜色 |
| 变量 | 说明 |
|---|
--mewx-cms-help-articles-heading-text | 标题文字色 |
--mewx-cms-help-articles-group-bg | 分组背景色 |
--mewx-cms-help-articles-link-icon | 链接图标色 |
--mewx-cms-help-articles-link-hover-text | 链接悬停色 |
| 变量 | 说明 |
|---|
--mewx-cms-comment-heading-text | 标题文字色 |
--mewx-cms-comment-divider-color | 分割线颜色 |
| 变量 | 说明 |
|---|
--mewx-cms-link-card-list-card-bg | 卡片背景色 |
--mewx-cms-link-card-list-title-text | 卡片标题色 |
--mewx-cms-link-card-list-title-hover-text | 标题悬停色 |
| 变量 | 说明 |
|---|
--mewx-cms-embed-heading-text | 标题文字色 |
--mewx-cms-embed-muted-text | 辅助文字色 |
👉 AI 主题生成指南
“请参考 GoEnhance CMS UI 的 AI 主题生成指南,为我生成一套蓝色的亮色主题配置。”