我正在尝试获取div中文本的总行数,并建议我可以将div的display属性设置为inline,并且返回的clientRect数将等于文本的行数。但是,我需要在div上使用绝对定位,并且这样做时不起作用。

这是问题的一个示例:http://jsfiddle.net/cu5kb/

var x = document.createElement("div");
x.style.display = "inline";
x.style.whiteSpace = "pre-line";
x.style.position = "absolute";
var y = document.createTextNode("Text \n text");
x.appendChild(y);


而不是2 rects我得到1:

x.getClientRects()。length === 1

有办法解决这个问题吗?

最佳答案

更新资料

CSS 2.1中有3 positioning schemes


正常流量。在CSS 2.1中,常规流程包括块级框的块格式设置,行级框的内联格式设置以及块级框和行级框的相对位置。
浮空。在浮点模型中,首先根据正常流布局一个框,然后从流中取出一个框,并尽可能向左或向右移动。内容可能会沿着浮标的侧面流动。
绝对定位。在绝对定位模型中,将一个框从正常流中完全删除(它对以后的同级没有影响),并相对于一个包含块指定一个位置。


Docs says,该getClientRects仅适用于内联元素,并且仅在正常流动的情况下有效。其他方案使它阻塞或至少如此对待,而docs says


  但是对于块元素,[浏览器]将仅返回单个矩形。

10-05 23:12