主要观点:用 HTML + CSS + TypeScript + Next.js(React)构建带有嵌入式“显示更多”按钮和渐变背景的通用可展开字幕。
关键信息:
- 界面常需根据后端数据长度变化的短内容块,如字幕和短描述,常要求“显示更多”交互。
- 起初想法是按固定字符数切片文本,但忽略字体等样式属性,不支持响应式设计。
- 介绍了两种更智能的方法:隐藏容器测量(性能密集,需多次测量隐藏元素高度)和画布文本测量(快速但代码冗长难维护)。
- 最终采用 CSS 方法,利用
line-clamp-2
、overflow-hidden
和clip-path
结合,通过裁剪第二行部分并添加按钮来实现自适应布局,无需 JavaScript 计算,可适应各种屏幕尺寸和字体,渲染快且维护性高。
重要细节: - 在隐藏容器测量中,用原生循环或二进制搜索找到换行字符,考虑样式和容器宽度。
- 在画布文本测量中,通过
measureTextWidth
函数测量文本宽度等。 - 在最终 CSS 方法中,通过
subtitleClasses
类控制样式,handleOpenExpand
函数处理按钮点击事件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。