Landing Page (首页) UI 设计规范
更新时间: 2026-02-03
页面路径: workbench/NextUI.Workbench.Server/Pages/Index.cshtml
技术栈: ASP.NET Core Razor Pages (非 Blazor)
1. 页面概述
Landing Page 是 NextUI 官网的首页,采用现代化的分屏布局设计,左侧展示产品信息和特性标签,右侧展示大型抽象 UI 插图。页面使用固定的毛玻璃效果 Header 和 Footer,内容区域可滚动穿透。
技术说明: 此页面使用 Razor Pages 实现(服务端渲染),而非 Blazor 组件。因此无法使用 Sx* 组件,但样式必须使用 NextUI Design Tokens 以保持视觉一致性。
2. 页面结构
┌─────────────────────────────────────────────────────────────────────┐
│ Header (Fixed + Glass Blur) │
│ [Logo] [Nav: 文档 | 组件] [Actions: 语言 | 主题 | 登录] │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────┬───────────────────────────────────┐ │
│ │ │ │ │
│ │ LEFT: Content │ RIGHT: Illustration │ │
│ │ (50%) │ (50%) │ │
│ │ │ │ │
│ │ NextUI for Blazor │ ┌─────────────────────────┐ │ │
│ │ 企业级 Blazor UI... │ │ ┌────────┬──────────┐ │ │ │
│ │ │ │ │ Card 1 │ Card 2 │ │ │ │
│ │ [快速开始] [浏览组件] │ │ │ (表单) │ (图表) │ │ │ │
│ │ │ │ └────────┴──────────┘ │ │ │
│ │ ╭──────╮ ╭──────╮ │ │ ┌────────┬──────────┐ │ │ │
│ │ │Design│ │ 高性能│ │ │ │ Card 3 │ Card 4 │ │ │ │
│ │ ╰──────╯ ╰──────╯ │ │ │ (输入) │ (列表) │ │ │ │
│ │ ╭──────╮ ╭──────╮ │ │ └────────┴──────────┘ │ │ │
│ │ │国际化│ │ 100+ │ │ └─────────────────────────┘ │ │
│ │ ╰──────╯ ╰──────╯ │ SVG 插图 │ │
│ │ │ │ │
│ └─────────────────────────┴───────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────┤
│ Footer (Fixed + Glass Blur) │
│ NextUI © 2026 · GitHub · 文档 · 组件 │
└─────────────────────────────────────────────────────────────────────┘
3. 设计理念
3.1 视觉风格
- 分屏布局: 左右 50/50 分割,内容与插图平衡
- 毛玻璃效果: Header 和 Footer 使用
backdrop-filter: blur(12px) 实现半透明模糊
- 渐变背景: 微妙的三色渐变 (蓝→紫→粉),增加深度感
- 轻量感: 大量使用半透明白色和轻微阴影,营造轻盈现代感
3.2 颜色系统
| 元素 |
颜色 |
说明 |
| 主背景 |
rgba(59,130,246,0.03) → rgba(147,51,234,0.03) → rgba(236,72,153,0.03) |
三色渐变 135° |
| Header/Footer |
rgba(255,255,255,0.8) |
半透明白色 + blur |
| 插图区背景 |
#f8fafc → #f1f5f9 |
浅灰渐变 |
| 特性标签 |
rgba(255,255,255,0.8) |
半透明胶囊 |
4. 组件组成
4.1 布局文件
| 文件 |
用途 |
Pages/Shared/_Layout.cshtml |
主布局 (HTML head, body) |
Pages/Shared/_Header.cshtml |
页头 (固定 + 毛玻璃) |
Pages/Shared/_Footer.cshtml |
页脚 (固定 + 毛玻璃) |
Pages/Index.cshtml |
首页内容 (分屏布局) |
4.2 样式文件
| 文件 |
用途 |
wwwroot/css/static-pages.css |
Landing Page 和 Docs 样式 |
_content/NextUI.Blazor/Styles/sx-tokens.css |
Design Tokens |
5.1 样式规格
| 属性 |
值 |
说明 |
| 定位 |
position: fixed |
固定在顶部 |
| 高度 |
64px |
--static-header-height |
| 背景 |
rgba(255,255,255,0.8) |
半透明 |
| 模糊 |
backdrop-filter: blur(12px) |
毛玻璃效果 |
| 边框 |
1px solid rgba(0,0,0,0.06) |
微妙分割线 |
| 层级 |
z-index: 100 |
置顶 |
5.2 导航链接
| 链接 |
URL |
激活条件 |
| 文档 |
/docs |
Path 以 /docs 开头 |
| 组件 |
/components |
Path 以 /components 开头 |
5.3 操作按钮
| 按钮 |
功能 |
当前状态 |
| 语言切换 |
切换 UI 语言 |
⚠️ 未实现 (仅 UI) |
| 主题切换 |
亮色/暗色模式 |
⚠️ 未实现 (仅 UI) |
| 登录 |
跳转认证页面 |
/authentication/login |
6. 分屏布局 (Split Layout)
6.1 结构
<div class="landing-container">
<div class="landing-split">
<div class="landing-content"><!-- 左侧内容 --></div>
<div class="landing-illustration"><!-- 右侧插图 --></div>
</div>
</div>
6.2 左侧内容区 (landing-content)
| 属性 |
值 |
说明 |
| 宽度 |
50% |
flex: 0 0 50% |
| 内边距 |
var(--sx-spacingVerticalXL) var(--sx-spacingHorizontalXL) |
响应式调整 |
| 对齐 |
justify-content: center |
垂直居中 |
| 左边距 |
动态计算 |
宽屏时对齐 max-width |
6.3 右侧插图区 (landing-illustration)
| 属性 |
值 |
说明 |
| 宽度 |
50% |
flex: 0 0 50% |
| 背景 |
linear-gradient(135deg, #f8fafc, #f1f5f9) |
浅灰渐变 |
| 对齐 |
center |
水平垂直居中 |
| 溢出 |
overflow: hidden |
裁剪超出部分 |
7. Hero Section 规格
7.1 内容
| 元素 |
类名 |
内容 |
| 标题 |
.landing-hero__title |
NextUI for Blazor |
| 副标题 |
.landing-hero__subtitle |
企业级 Blazor UI 组件库... |
| 主按钮 |
.landing-hero__btn--primary |
快速开始 → /docs/getting-started |
| 次按钮 |
.landing-hero__btn--secondary |
浏览组件 → /components |
7.2 标题样式
| 属性 |
值 |
| 字号 |
clamp(2rem, 4vw, 3rem) |
| 字重 |
var(--sx-fontWeightBold) |
| 颜色 |
var(--sx-colorNeutralForeground1) |
| 行高 |
1.2 |
| 字间距 |
-0.02em |
7.3 副标题样式
| 属性 |
值 |
| 字号 |
clamp(0.95rem, 1.5vw, 1.125rem) |
| 颜色 |
var(--sx-colorNeutralForeground2) |
| 行高 |
1.7 |
| 最大宽度 |
480px |
7.4 按钮样式
| 类型 |
背景 |
文字 |
边框 |
| Primary |
var(--sx-colorBrandBackground) |
var(--sx-colorNeutralForegroundOnBrand) |
无 |
| Secondary |
rgba(255,255,255,0.9) |
var(--sx-colorNeutralForeground1) |
var(--sx-colorNeutralStroke1) |
Hover 效果:
transform: translateY(-2px) 上浮
box-shadow: 0 4px 12px rgba(0,0,0,0.1) 阴影
8.1 设计风格
特性不再使用卡片,而是使用紧凑的胶囊标签形式,带有 SVG 线条图标。
8.2 特性列表
| SVG Icon |
标题 |
图标描述 |
| 图片图标 |
Design Tokens |
相框/图像 |
| 闪电图标 |
高性能 |
闪电 |
| 地球图标 |
国际化 |
经纬线地球 |
| 布局图标 |
100+ 组件 |
网格布局 |
| 图表图标 |
数据可视化 |
柱状图 |
| 盾牌图标 |
身份认证 |
带勾选的盾牌 |
8.3 标签样式
| 属性 |
值 |
| 布局 |
display: inline-flex |
| 内边距 |
var(--sx-spacingVerticalXS) var(--sx-spacingHorizontalM) |
| 圆角 |
100px (完全圆角) |
| 背景 |
rgba(255,255,255,0.8) |
| 边框 |
1px solid rgba(0,0,0,0.06) |
| 图标尺寸 |
16px × 16px |
| 图标颜色 |
var(--sx-colorBrandForeground1) |
| 文字颜色 |
var(--sx-colorNeutralForeground1) |
| 字重 |
500 |
Hover 效果:
- 背景变为
white
- 添加轻微阴影
box-shadow: 0 2px 8px rgba(0,0,0,0.06)
9. SVG 插图规格
9.1 概述
右侧展示一个大型 SVG 插图,包含多个模拟 UI 组件的图形元素,展示产品能力。
9.2 插图内容
| 元素 |
位置 |
描述 |
| Card 1 |
左上 (80, 120) |
带头像、标题、按钮的卡片 |
| Card 2 |
右上 (420, 80) |
带柱状图的数据卡片 |
| Card 3 |
中左 (150, 380) |
表单卡片 (标题 + 3个输入框 + 按钮) |
| Card 4 |
中右 (480, 340) |
列表卡片 (标题 + 4个列表项) |
| 装饰圆 |
分散 |
半透明渐变圆形背景 |
| 连接线 |
卡片间 |
虚线连接表示组件关系 |
9.3 配色
| 元素 |
颜色 |
| 主渐变 |
#3B82F6 → #8B5CF6 (蓝→紫) |
| 装饰渐变 |
#EC4899 → #F59E0B (粉→橙) |
| 卡片背景 |
white |
| 卡片阴影 |
drop-shadow(0 4px 20px rgba(0,0,0,0.08)) |
| 占位文本 |
#E5E7EB, #F3F4F6 |
| 强调色 |
#10B981 (绿色指示器) |
10.1 样式规格
| 属性 |
值 |
说明 |
| 定位 |
position: fixed |
固定在底部 |
| 高度 |
56px |
--static-footer-height |
| 背景 |
rgba(255,255,255,0.8) |
半透明 |
| 模糊 |
backdrop-filter: blur(12px) |
毛玻璃效果 |
| 边框 |
1px solid rgba(0,0,0,0.06) |
微妙分割线 |
| 层级 |
z-index: 100 |
置顶 |
10.2 内容
| 元素 |
内容 |
| 版权 |
NextUI © {当前年份} |
| 链接 |
GitHub (外部) · 文档 · 组件 |
11. 响应式断点
11.1 断点定义
| 断点 |
范围 |
说明 |
| 桌面 |
> 1200px |
完整分屏布局 |
| 小桌面 |
1024px - 1200px |
调整左边距 |
| 平板 |
768px - 1024px |
垂直堆叠布局 |
| 移动 |
< 768px |
紧凑布局,隐藏导航 |
11.2 响应式变化
| 断点 |
变化 |
≤ 1200px |
左侧内容区左边距恢复正常 |
≤ 1024px |
分屏→垂直堆叠, 内容在上, 插图在下 (50vh), 内容居中对齐 |
≤ 768px |
导航隐藏, 插图高度减至 40vh, 标题缩小至 1.75rem |
11.3 平板/移动端布局
┌────────────────────────────┐
│ Header │
├────────────────────────────┤
│ │
│ NextUI for Blazor │
│ (居中对齐) │
│ │
│ [快速开始] [浏览组件] │
│ │
│ ╭──────╮ ╭──────╮ │
│ │ Tag │ │ Tag │ ... │
│ ╰──────╯ ╰──────╯ │
│ │
├────────────────────────────┤
│ │
│ SVG 插图 (50vh) │
│ │
├────────────────────────────┤
│ Footer │
└────────────────────────────┘
12. 暗色主题
12.1 变化
| 元素 |
亮色 |
暗色 |
| 背景渐变透明度 |
0.03 |
0.05 |
| 背景基底色 |
无 |
#1a1a1a |
| Header/Footer |
rgba(255,255,255,0.8) |
rgba(26,26,26,0.8) |
| 边框 |
rgba(0,0,0,0.06) |
rgba(255,255,255,0.06) |
| 特性标签背景 |
rgba(255,255,255,0.8) |
rgba(40,40,40,0.8) |
| 次要按钮背景 |
rgba(255,255,255,0.9) |
rgba(40,40,40,0.8) |
| 插图区背景 |
#f8fafc → #f1f5f9 |
#1e293b → #0f172a |
13. Design Token 使用统计
13.1 颜色 Tokens
| Token |
用途 |
--sx-colorNeutralForeground1 |
主要文字 |
--sx-colorNeutralForeground2 |
次要文字 |
--sx-colorNeutralForeground3 |
辅助文字 |
--sx-colorBrandForeground1 |
品牌色文字/图标 |
--sx-colorBrandBackground |
品牌色背景 (alias) |
--sx-colorBrandBackgroundHover |
品牌色背景悬停 (alias) |
--sx-colorNeutralForegroundOnBrand |
品牌背景上的文字 (alias) |
--sx-colorNeutralStroke1 |
边框 |
--sx-colorNeutralStroke2 |
次要边框 |
13.2 间距 Tokens
| Token |
用途 |
--sx-spacingVerticalXS |
标签内垂直间距 |
--sx-spacingVerticalS |
按钮内垂直间距 |
--sx-spacingVerticalM |
中等垂直间距 |
--sx-spacingVerticalL |
大垂直间距 |
--sx-spacingVerticalXL |
区块垂直间距 |
--sx-spacingHorizontalXS |
标签内图标间距 |
--sx-spacingHorizontalS |
小水平间距 |
--sx-spacingHorizontalM |
按钮内水平间距 |
--sx-spacingHorizontalL |
大水平间距 |
--sx-spacingHorizontalXL |
区块水平间距 |
13.3 其他 Tokens
| Token |
用途 |
--sx-borderRadiusMedium |
按钮/链接圆角 |
--sx-fontWeightSemibold |
半粗字体 |
--sx-fontWeightBold |
粗字体 |
--sx-fontSizeBase200 |
小字号 |
--sx-fontSizeBase300 |
正文字号 |
--sx-fontSizeBase400 |
中等字号 |
13.4 CSS 变量别名
由于 Token 命名差异,在 static-pages.css 中定义了以下别名:
--sx-colorBrandBackground: var(--sx-colorBrandBackground1);
--sx-colorBrandBackgroundHover: var(--sx-colorBrandBackground2);
--sx-colorNeutralForegroundOnBrand: var(--sx-colorOnBrand);
--sx-spacingHorizontalS: var(--sx-spacing-sm);
/* ... 更多别名 */
14. 规范合规检查
14.1 组件使用
| 检查项 |
结果 |
说明 |
| 原生 HTML 元素 |
⚠️ 豁免 |
Razor Pages 无法使用 Blazor 组件 |
<button> |
使用 2 处 |
Header 的语言/主题切换按钮 |
<a> |
使用多处 |
所有导航链接 |
| SVG 内联 |
使用 |
特性图标和大型插图 |
合规说明: 此页面是 Razor Pages 而非 Blazor,属于规范的豁免情况。
14.2 样式检查
| 检查项 |
结果 |
说明 |
| 硬编码颜色 |
⚠️ 例外 |
半透明 rgba 值用于毛玻璃效果 |
| 硬编码间距 |
✅ 无 |
使用 token 变量 |
| 硬编码圆角 |
⚠️ 例外 |
100px 用于胶囊标签 |
| Design Token 使用 |
✅ 正确 |
文字/背景/间距使用 token |
14.3 例外说明
| 例外 |
原因 |
rgba(255,255,255,0.8) |
毛玻璃效果需要精确透明度 |
rgba(0,0,0,0.06) |
微妙边框需要精确透明度 |
100px 圆角 |
胶囊形状需要超大圆角 |
clamp() 字号 |
响应式字号需要精确控制 |
| SVG 内联颜色 |
插图渐变使用固定品牌色 |
15. 典型使用场景 (Use Cases)
15.1 UC-1: 访客首次访问
步骤:
- 用户访问
/
- 看到分屏布局:左侧产品介绍,右侧 UI 插图
- 浏览特性标签了解产品能力
- 点击 "快速开始"
预期结果: 跳转到 /docs/getting-started
15.2 UC-2: 访客浏览组件
步骤:
- 用户访问
/
- 点击 "浏览组件" 或导航栏 "组件"
预期结果: 跳转到 /components
15.3 UC-3: 移动端访问
步骤:
- 用户在移动设备访问
/
预期结果:
- 导航栏隐藏
- 布局变为垂直堆叠(内容在上,插图在下)
- 内容居中对齐
- 特性标签自动换行
16. 测试检查点
16.1 必须测试 (E2E)
16.2 响应式测试
16.3 主题测试
17. 已知问题 / TODO
| 优先级 |
问题 |
状态 |
| P2 |
语言切换按钮无功能 |
未实现 |
| P2 |
主题切换按钮无功能 |
未实现 |
| P3 |
移动端需要汉堡菜单 |
未实现 |
| P3 |
无 SEO meta 标签 |
未实现 |
| P3 |
无 Open Graph 标签 |
未实现 |
18. 变更历史
| 日期 |
变更内容 |
| 2026-02-03 |
初始版本,随 Workbench 重构创建 |
| 2026-02-03 |
重大更新: 分屏布局设计 |
|
- 采用左右 50/50 分屏布局 |
|
- 固定 Header/Footer 使用毛玻璃效果 |
|
- 特性从卡片改为胶囊标签 |
|
- 添加大型 SVG 插图展示 UI 组件 |
|
- 响应式支持垂直堆叠布局 |