如果您确实要格式化文本,就像在word-wrap:break-word; word-break:break-all;元素上设置了p一样(正如您在评论中所说的那样)并且每个结果行都转换为段落,那么您需要代码如下:逐个字符处理p元素,在给定宽度的字符上放置尽可能多的字符。超过时,构造一个新的p元素并继续其余的文本。您可以通过将字符写入不可见的内联块并检查其渲染宽度来完成此操作。
示例(请注意,只有当段落只包含文本,没有标记时,这才真正起作用):
I am some random text. I am Some text.blabla
var width = 60;
var p = document.getElementById('p');
var parent = p.parentNode;
var line = document.createElement('span');
line.style.display = 'inline-block';
line.style.visibility = 'hidden';
var content = p.innerHTML;
document.body.appendChild(line);
var start = 0;
var i = 1;
while(i < content.length) {
line.innerHTML = content.substring(start, i);
console.log(i + ' ' + content.length);
if(line.clientWidth > width) {
var newp = document.createElement('p');
newp.style.width = width + 'px';
newp.innerHTML = content.substring(start, i - 1);
parent.insertBefore(newp, p);
start = i - 1;
i = start + 1;
}
else {
i++;
}
}
newp = document.createElement('p');
newp.style.width = width + 'px';
newp.innerHTML = content.substring(start);
parent.insertBefore(newp, p);
parent.removeChild(p);
我很确定你应该采用一种完全不同的方法,但我无法解决你试图解决的最终问题,因为它没有被描述。
664

被折叠的 条评论
为什么被折叠?



