目前大多数浏览器不支持多行文本缩略,因此需要做兼容处理。比较好的思路是在首次渲染后去读取每个文字的宽度,计算是否应该展示缩略效果。为了能够读取每个文字的宽度,需要使用 span 包裹每个文字。
- 在非缩略状态下,通过读取每个文字的宽度,计算是否应该缩略
- 如果需要缩略,则使用一个 span 包裹前几行不需要缩略的文字,用另一个 span 包裹后几行需要缩略的文字
- 如果不需要缩略,使用 span 包裹每一个文本
- 如果文本更新了
4.1 如果当前处于缩略状态,则先重置为非缩略状态,然后在跳转到步骤 1
4.2 如果当前处于非缩略状态,则直接跳转到步骤 1
React 的示例代码如下所示:
1 | import React, { useState, useRef, useEffect } from 'react'; |