计算换行文字序号

通过克隆节点,逐一添加文本,通过高度变换判断来计算换行第一个文字的序号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// $0替换为文本标签  
let p = $0;
let text = p.textContent;
let temp = document.createElement('p');
temp.style.visibility = 'hidden';
temp.style.width = getComputedStyle(p).width;
// document.getElementById("testText") 是 $0父标签
document.getElementById("testText").appendChild(temp);

let index = 0;
// 初始化,当没有文本时高度为0
let lastHeight = 0;
for (let i = 0; i < text.length; i++) {
temp.textContent = text.slice(0, i + 1);
if (temp.offsetHeight > lastHeight) {
index = i;
lastHeight = temp.offsetHeight;
// 打印文本高度变化时各项信息
console.log('文本高度:', lastHeight, '\r\n文本序号:', index, '\r\n第一个文字:', text[index])
if (lastHeight > p.offsetHeight) {
break;
}
}
}
document.getElementById("testText").removeChild(temp);

需要注意的是,克隆的节点 temp = document.createElement(‘p’) 需要和原始节点相同的标签、class、style,否则可能出现计算错位的情况。


计算换行文字序号
http://example.com/20240123-计算换行文字序号/
作者
csorz
发布于
2024年1月23日
许可协议