[Design] 移动端适配 — breakpoints、UX 模式和 CSS 基础层 #2771
neilforest7
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
背景
DeerFlow 的 workspace UI 目前以桌面端(≥1280px)为前提设计。在移动设备上存在一些体验问题,这里整理出来供讨论:
interactive-widget=resizes-content,跨浏览器适配需要额外处理visualViewport。设计提案
写代码之前先确认方向。
1. Breakpoint 策略
max-sm)lg+)核心分界线是 1024px。低于这个宽度,persistent sidebar + 多栏 layout 会比较拥挤;高于这个宽度,现有桌面端布局无需改动。
建议加一个自定义 breakpoint
--breakpoint-tab: 800px,专门覆盖 Galaxy Tab S9 竖屏——它刚好卡在 Tailwind 的md(768)和lg(1024)之间。2. Layout 模式切换
1024px 以下全屏切换更实用:即使最大平板(~924px),60/40 分栏每边也只有 ~550/370px。
对小屏幕 sidebar 的设想:在窄屏上通过一个明显的 toggle 按钮以 Sheet overlay 方式打开 sidebar,覆盖在当前内容上方。这样切换对话、选择 agent、进入 workspace 导航都通过同一个入口完成。
3. CSS 基础层
可被现有组件按需使用的 infrastructure:
pt-safe/pb-safe/px-safe/py-safe— 引用env(safe-area-inset-*)的 padding utility,适配 iPhone 的 notch / Dynamic Island / Home Indicatorpb-keyboard/bottom-keyboard— 底部定位跟随键盘上下移动,通过max(env(keyboard-inset-bottom), var(--keyboard-inset-js))实现。JS fallback(useVisualViewporthook)覆盖 iOS Safaritouch-target— 在有 coarse pointer 的设备上强制min-width/height: 2.75rem(44px),匹配 Apple HIG 的最低触控尺寸hoverable:custom variant — 把 hover 交互限定在@media (hover: hover) and (pointer: fine),触摸设备不会出现「摸不到才显示」的 UI4. Viewport metadata
根 layout 需要
viewportFit: "cover"(让env(safe-area-inset-*)在 iPhone 上返回非零值)和interactiveWidget: "resizes-content"(Chromium 在键盘弹出时收缩 layout viewport)。已有探索
PR #2409 已经在这个方向上做了完整实现,真机测试覆盖了 iPhone 14 全系和 Galaxy Tab S9 系列。其思路与上述设计一致。
如果 maintainers 认可移动端适配的方向,我可以基于 #2409 继续推进,也可以拆成增量 PR 从头来,看你们更倾向哪种。
想确认的几个问题
@utilityclass 做 safe-area / keyboard / touch-target)有没有顾虑或更好的建议?Beta Was this translation helpful? Give feedback.
All reactions