Skip to content

feat: 优化 InputBar 底部栏布局与移动端交互体验#51

Open
avelli wants to merge 8 commits into
CookSleep:mainfrom
avelli:pr/inputBar
Open

feat: 优化 InputBar 底部栏布局与移动端交互体验#51
avelli wants to merge 8 commits into
CookSleep:mainfrom
avelli:pr/inputBar

Conversation

@avelli
Copy link
Copy Markdown
Contributor

@avelli avelli commented May 13, 2026

概述

优化输入栏底部布局,改善桌面端按钮行结构,并针对移动端做了交互优化——键盘适配、参数选择、图片附件入口等。

改动内容

代码优化

  • 提取 useHintTooltip hook,统一 5 组重复的 tooltip 状态管理,减少约 90 行样板代码

桌面端底部 UI 优化

  • 参数设置改为弹窗模态框(齿轮按钮触发),释放底栏空间
  • 尺寸选择器独立为固定宽度按钮,放置在底部UI栏左侧
  • 所有按钮统一 h-10 高度并居中对齐
image

移动端体验优化

  • 新增 useKeyboardVisible hook,兼容 visualViewport / focusin / window.resize 三种键盘检测方式
  • 键盘弹出时隐藏拖动条、参数栏和附件按钮,只保留输入框和提交
  • 参数设置改为横向滚动 chip + 底部 action sheet 选择
  • 新增相册(+ 号)和相机双入口按钮
  • 点击输入栏外部自动收起键盘
  • 参数栏恢复时带 fade-in-up 过渡动画
键盘收起 键盘弹出

其他

  • 简化输入框 placeholder 文案
  • 收紧移动端参考图栏间距

测试

  • 桌面端:齿轮按钮打开参数弹窗,ESC / 点击外部可关闭
  • 桌面端:尺寸按钮、附件按钮、提交按钮对齐正常,tooltip 不被裁剪
  • 移动端:键盘弹出时参数栏和附件按钮隐藏,收起后带动画恢复
  • 移动端:+ 号按钮打开相册,相机按钮触发拍照
  • 移动端:点击输入栏外部收起键盘
  • 移动端:参数 chip 横向滚动,点击弹出 action sheet 选择后正确更新
  • 移动端:PWA 全屏模式下键盘检测不误判
  • 跨断点(640px)切换时输入内容不丢失
  • TypeScript 编译通过,无类型错误

移动端浏览器兼容性验证: Edge、夸克浏览器、微信内置浏览器均表现正常。

涉及文件

  • src/components/InputBar.tsx — 主要改动
  • src/hooks/useHintTooltip.ts — 新增
  • src/index.css — 新增动画和工具类

avelli and others added 8 commits May 12, 2026 19:36
将 InputBar 中 5 组重复的 hint 状态(compression、moderation、size、
quality、nLimit)及其对应的 timer ref、show/hide/clear/startTouch 函数
替换为统一的 useHintTooltip hook 调用,减少约 90 行样板代码。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 移除桌面端和移动端分离的两套按钮行,统一为单行布局
- 参数设置改为弹窗模态框(齿轮按钮触发)
- 尺寸选择器独立为固定宽度按钮,放置在提交键左侧
- 所有按钮统一 h-10 高度并居中对齐
- ButtonTooltip 添加 wrapper span 修复 overflow-hidden 裁剪问题

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 新增 useKeyboardVisible hook,兼容 visualViewport / focusin / window.resize 三种检测方式
- 键盘弹出时隐藏拖动条和参数栏,收起后带 fade-in-up 过渡动画
- 参数设置改为横向滚动 chip 样式,点击弹出底部 action sheet 选择
- 新增相机按钮(cameraInputRef),支持直接拍照上传
- 点击输入栏外部自动收起键盘
- 桌面端和移动端输入区域分离为独立渲染路径
- 新增 scrollbar-hide、animate-slide-up、pb-safe 等 CSS 工具类

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 在相机按钮前新增 + 号按钮,点击打开相册(fileInputRef)
- 用 keyboardVisible 条件包裹两个按钮,键盘弹出时自动隐藏

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- useKeyboardVisible 改用 screen.height 作为稳定基准,避免 PWA 全屏切换时判断失准
- prompt 同步 effect 加入 isMobile 依赖,确保跨 640px 断点切换时内容正确恢复

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 为移动端/桌面端输入区域添加 Fragment key,强制 React 卸载重建而非就地协调
- isMobile 变化时重置 prevHeightRef,新元素跳过动画直接设置正确高度

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@CookSleep
Copy link
Copy Markdown
Owner

不好意思这个合并可能没有那么快,正在开发Agent模式,这几天Gemini炸麻了,前端被卡脖子了)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants