惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
Scott Helme
Scott Helme
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
Webroot Blog
Webroot Blog
S
Security Affairs
H
Hacker News: Front Page
TaoSecurity Blog
TaoSecurity Blog
W
WeLiveSecurity
G
GRAHAM CLULEY
T
Tenable Blog
Schneier on Security
Schneier on Security
S
Securelist
Cyberwarzone
Cyberwarzone
P
Privacy International News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
O
OpenAI News
N
News and Events Feed by Topic
AWS News Blog
AWS News Blog
C
Cisco Blogs
T
Threat Research - Cisco Blogs
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
D
DataBreaches.Net
博客园_首页
MyScale Blog
MyScale Blog
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
P
Proofpoint News Feed
J
Java Code Geeks
SecWiki News
SecWiki News
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

博客园 - 华腾智算

子系统框架存档20260717 响应式后台管理系统 smart-water 融合多端协同总体架构设计方案 现代前端架构的核心思想 极简设计框架 跨平台弹性栅格理念设计 多端统一设计理念 现代栅格设计之一 设计中的栅格系统 智慧水利顶层设计之何为“水利矩阵”与“数字孪生” 从古典Web到AI原生超级应用:团队学习路线与未来架构蓝图 最新架构设计 前端代码规范 v1.0 树型菜单全功能代码 最终最佳实践操作文档:统信UOS VSCode 全栈开发环境配置(基于 Chromium 浏览器) vscode-setting.json配置 VSCode 全栈开发环境初始化设置与跨平台配置指南(Windows/macOS 通用) VScode完整的跨平台适配方案 完整的跨平台 settings.json(飞雪飘鸿优化版) 数字孪生破局之道 完整的GLFW应用程序示例 雏形 程序方向 web三维 第一步,第一行,开始 绘制三角形 明确目标 从文本文件加载指令到模拟内存中,并显示前11个内存单元的内容 使用Python的pydub库播放音乐并打印二进制数据 python的音频处理 python加密与解密 mainwindows.cpp 十进制数213转换为二进制数的完整过程,使用除2取余法(也称为“重复除法法”) 二进制数 \((-1101.101)_2\) 转换为十进制数 - 华腾智算
一套规则,多端伸缩的UI设计理念
华腾智算 · 2026-07-16 · via 博客园 - 华腾智算

好的,面对桌面(1920×1080)、手机(1080×2400像素,360dp基准)、户外100寸级大屏(15.36m×6.72m)这三种跨度极大的平台,传统的“一套固定列数网格打天下”已经完全失效。我们需要一套基于现代布局趋势的、能够根据观看距离和屏幕物理特性自适应弹性伸缩的栅格体系。


一、设计理念:一套规则,多端伸缩

我们不定义全局列数,而是定义弹性轨道行为空间基准令牌。核心策略:

  1. 轨道自适应:所有多列布局使用 repeat(auto-fit, minmax(最小列宽, 1fr)),让内容自己决定列数。
  2. 间距令牌化:定义一组基于观看距离的缩放间距,同一套令牌名在不同端映射不同值。
  3. 内容区按比例约束:桌面用最大宽度限制阅读体验;大屏用面积比例保证信息不被拉伸成扁条;手机自然满宽。
  4. 栅格即辅助:设计工具中依然可以提供参考栅格列(如24/8/16),但它们只是视觉辅助,不是代码约束

二、桌面端(1920×1080)栅格设计

设计画布:1920×1080,主要服务于距屏幕约50–70cm的桌面办公场景。

  • 内容容器
    主内容区最大宽度 1440px,居中。用 min(100% - 64px, 1440px) 实现,保证小屏时左右各留32px。
  • 弹性网格(卡片、仪表板、列表):
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr))
    间隙:24px
    效果:1440px容器内显示约4–5列,窗口缩窄自动减少,无断点突变。
  • 固定比例区域
    需要2:1等比例时,直接 grid-template-columns: 2fr 1fr,放弃“占列数”概念。
  • 设计辅助栅格(可选):
    如果团队仍习惯使用Figma栅格,可配置24列、水槽16px、边距随内容区变化,但仅作视觉参考。

关键参数

  • 最小列宽:280–320px
  • 主间距:24px
  • 次间距:16px
  • 内容最大宽度:1440px

三、手机端(1080×2400,设计基准360dp)栅格设计

屏幕物理分辨率虽高,但逻辑像素基准为 360dp 宽(density=3)。设备距眼睛约30cm。

  • 页面框架padding: 16dp 全局水平边距,内容宽度 328dp 自动撑满。
  • 弹性网格
    grid-template-columns: repeat(auto-fit, minmax(152dp, 1fr))
    间隙:12dp
    行为:360dp时恰好两列(152×2+12=316dp),320dp时自动回退到一列,横屏时变3–4列。
  • 容器查询
    对于组件内部重排,使用 container-type@container,不再依赖全局断点。
  • 设计辅助栅格:可使用4列、水槽16dp作为默认模度。

关键参数

  • 最小列宽:140–160dp
  • 主间距:16dp
  • 次间距:12dp
  • 全局边距:16dp

四、户外大屏(15.36m×6.72m)栅格设计

这是最有挑战的部分。 物理尺寸巨大(宽高比约2.285:1),观看距离通常≥10m,需要完全不同的视觉尺度。设计时不能直接用桌面逻辑,而需要建立一套适合远距离读取的“展示型网格”

1. 设计画布与像素映射

户外LED屏通常由模组拼接,无标准逻辑分辨率。为了设计和开发统一,我们按比例画布处理:

  • 取宽度为 3840px(4K超宽),高度按比例:3840 / (15.36/6.72) ≈ 1680px
  • 这样画布为 3840×1680px,比例与物理屏一致。
  • 前端实际显示时,可让浏览器全屏映射到该分辨率,由播放器缩放。

2. 信息密度与最小元素尺寸

远距离观看时,字号、间距、点击区域必须成倍放大。通常大屏设计遵循最小可读尺寸原则。假设视距15米,最小可见字号约40px(设计稿)。因此网格的最小列宽必须非常大,避免列太窄内容折行难看。

推荐弹性网格参数

  • grid-template-columns: repeat(auto-fit, minmax(640px, 1fr))
  • 间隙:48px ~ 64px
  • 内容边距:80~120px(物理上约30-40cm留白)

这样在3840px宽容器中:

  • 如果 minmax(640px, 1fr) + 间隙64px:大约可容纳 5列((3840-80*2)/704 ≈ 5.2)。
  • 大屏内容通常为数据看板、KPI卡片、监控图表,每列放一个独立指标,五列非常合适。
  • 如果屏幕更宽(如拼接更大),列数自动增加,卡片不会变形。

3. 使用比例容器代替固定max-width

与桌面不同,大屏需要充分利用显示面积,但又不能无限拉伸文字行。更好的做法是将整体版面划分为固定比例的功能区域,内部再用弹性网格。

例如使用CSS Grid定义页面框架:

.dashboard-screen {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;  /* 左大区域,右两个小区域 */
  grid-template-rows: auto 1fr;
  gap: 48px;
  padding: 80px;
  height: 100vh;
}

内部每个区域再嵌套自己的弹性卡片网格。这样既利用了超宽比例,又不会让单行文本拉成一条线。

4. 间距令牌大屏版

沿用同一套命名,但赋予更大的值:

令牌 桌面(px) 手机(dp) 大屏(px)
--space-md 16 12 32
--space-lg 24 16 48
--space-xl 32 24 64
--space-2xl 48 32 96

这样设计师在调整间距时,只需选择相同的Token,无需记忆数值。

5. 设计辅助参考栅格

对于大屏,设计师可以在3840×1680画布上拉一个16或20列、宽水槽的参考网格,但同样只是定位辅助。真正交付的是以功能区域和弹性卡片为单元的组件库。


五、三端统一实现策略

在代码层面,利用CSS自定义属性和极少的媒体查询/环境变量即可管理这三套参数:

:root {
  /* 默认桌面 */
  --grid-min-col: 280px;
  --grid-gap: 24px;
  --page-padding: 32px;
  --content-max: 1440px;
}

/* 手机端检测(可用媒体查询或JS添加类) */
body.mobile {
  --grid-min-col: 152px;
  --grid-gap: 12px;
  --page-padding: 16px;
  --content-max: 100%;
}

/* 大屏端(例如全屏展示的看板页) */
body.bigscreen {
  --grid-min-col: 640px;
  --grid-gap: 48px;
  --page-padding: 80px;
  --content-max: none;
}

所有网格组件统一使用:

.responsive-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(var(--grid-min-col), 1fr));
  gap: var(--grid-gap);
}

这样一套HTML结构,在三端自动呈现完全适配的列数和间距。


六、设计交付规范总结表

平台 设计画布 内容区/边距 弹性网格参数 间距主值 推荐设计辅助栅格
桌面 1920×1080 最大1440px居中,边距32px minmax(280px,1fr) 24px 24列,水槽16px(可选)
手机 360×780dp 边距16dp,内容328dp minmax(152dp,1fr) 16dp 4列,水槽16dp(可选)
大屏 3840×1680 边距80px,无最大宽度 minmax(640px,1fr) 48-64px 16列,水槽40px(可选)

最重要的转变:这套系统的核心不是规定几列,而是规定最小列宽和间距。设计师在Figma中使用自动布局+换行模拟,开发人员用弹性网格实现。从桌面到手机再到大屏,整个产品只用一种网格语言,却能在任何观看距离下提供清晰、舒适的体验。