Skip to content

修复 SeamlessContentRenderer 显示和布局问题 #248

@kubbot

Description

@kubbot

问题描述

在 reader 页面中,SeamlessContentRenderer 组件存在多个显示和布局问题,导致用户体验不佳。

当前问题

1. 内容显示异常

  • 问题: SeamlessContentRenderer 路径的内容完全无法显示
  • 表现: 页面显示空白或加载状态,但内容不渲染
  • 对比: 另一条渲染路径(SimpleContentRenderer)能正常显示内容

2. 下方空白区域过大

  • 问题: 内容区域下方存在大片空白区域
  • 影响: 浪费屏幕空间,用户需要过度滚动
  • 预期: 内容应该紧凑显示,无多余空白

3. 滚动条位置错误

  • 问题: 滚动条显示在内容区域内部而非容器边缘
  • 影响: 视觉不统一,用户体验不佳
  • 预期: 滚动条应该贴边显示,与其他组件保持一致

技术背景

  • SeamlessContentRenderer 用于渲染大型文档(>50KB 或 >30段落)
  • 使用 react-window 的 VariableSizeList 进行虚拟滚动
  • 小型文档使用普通滚动,大型文档使用虚拟滚动
  • 组件路径:frontend/components/ui/SeamlessContentRenderer.tsx

预期修复目标

目标 1: 恢复内容正常显示

  • 修复 SeamlessContentRenderer 无法显示内容的问题
  • 确保虚拟滚动和普通滚动两种模式都能正常工作
  • 保持与 SimpleContentRenderer 相同的内容渲染质量

目标 2: 消除下方空白区域

  • 优化容器高度计算逻辑
  • 确保内容区域高度与实际内容匹配
  • 移除不必要的 padding/margin

目标 3: 修复滚动条位置

  • 滚动条应该显示在容器最边缘
  • 与左侧原文栏的滚动条位置保持一致
  • 确保虚拟滚动的滚动条样式正确

测试用例

测试内容类型

  • 小型文档(<50KB,<30段落)- 使用普通滚动
  • 大型文档(>50KB,>30段落)- 使用虚拟滚动
  • 不同长度的文档内容

测试场景

  • 初始加载显示
  • 滚动性能和平滑度
  • 窗口大小调整响应
  • 移动端和桌面端兼容性

参考信息

  • 相关组件:frontend/components/ui/SimpleContentRenderer.tsx(工作正常的对比参考)
  • 布局组件:frontend/app/(withSidebar)/content-library/reader/[id]/page.tsx
  • 相关 PR:可能与最近的布局优化相关

优先级

High - 影响核心阅读功能,用户无法正常查看大型文档内容


环境信息

  • 浏览器:Chrome/Safari
  • 设备:桌面端
  • 分支:feat/sty-optimizes

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions