在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C++  HTML/ 如何確認(rèn)段落(p,div)中的內(nèi)容是在哪個(gè)字符或元素處換行的?

如何確認(rèn)段落(p,div)中的內(nèi)容是在哪個(gè)字符或元素處換行的?

  1. 我自己寫了一個(gè)簡(jiǎn)單的例子,但是有缺陷: 例子:split_p_content.html ,中英文混合時(shí)拆分是不準(zhǔn)確的;
  2. 自己想了幾天沒找到答案,越想越復(fù)雜。感覺和瀏覽器的渲染引擎有關(guān),雖然webkit是開源的,還有Blink,但是,也不知道從哪里看起;
  3. OpenOffice也想過,但是沒搜索到有幫助的內(nèi)容;
  4. 是否是我思路錯(cuò)了,還請(qǐng)網(wǎng)友援手,謝謝!
回答
編輯回答
念初

換行判斷\n

2017年7月26日 23:36
編輯回答
茍活

有個(gè)API,Element.getClientRects(),可以拿到每行行框位置的數(shù)組

2017年4月26日 02:13
編輯回答
舊城人

直接高效的辦法沒有,但是要達(dá)到你說的效果很容易。
把內(nèi)容取出來,一個(gè)字符一個(gè)字符地往一個(gè)定寬不定高的容器中放,什么時(shí)候高度變了,就說明換行了。

另外,如果自己排的話,每個(gè)字符按定寬處理,就可以直接算出來,擴(kuò)展一下,英文字符按半寬處理,結(jié)果也應(yīng)該還好。只是單個(gè)字符作為一個(gè)小塊來處理,字符量大了,性能也是問題。

2017年1月14日 04:08
編輯回答
故人嘆

花了一點(diǎn)時(shí)間寫代碼

兩種方法:

  1. 挨個(gè)取一個(gè)字符加到最后,直到p元素的高度達(dá)到兩倍行高
  2. 將元素中的文本按字符拆分span元素,取第二行第一個(gè)元素(elementFromPoint)

https://codepen.io/CarterLi/p...

第二種方式精度較高。。。

如果是等寬字體會(huì)比較簡(jiǎn)單。等寬字體英文字符寬度都是一樣的,中文字符寬度是英文的兩倍(精確值),只要知道一個(gè)英文字符的寬度,就可以直接計(jì)算出占滿一行所需要的字符數(shù)量。

EDIT:發(fā)現(xiàn)一個(gè)函數(shù) caretPositionFromPoint 很適合這個(gè)場(chǎng)景,代碼追加了

2017年6月10日 13:40