计算 div 中将使用多少行?

Calculate how many lines will be used in div?

在下面的代码片段中有四个 div,每个有 33 个字符。根据宽度和自动换行,div 可以占一行、两行或三行。事先计算这个的好方法是什么?

我需要这个的原因是因为我使用了一个 React 列表组件 (https://bvaughn.github.io/react-virtualized/#/components/List),它接受一个列表项高度的固定值或一个函数来计算列表项的高度,具体取决于索引。使用该索引,我可以检索 div 中的文本,并使用 JavaScript 获取列表的宽度。从这些变量中,我有望计算出合适的高度。

.p100 {
  width: 100px;
}

.p150 {
  width: 200px;
}
<div id="div1" class="p100">
  Hello Hello Hello Hello Hello
</div>
<hr>
<div id="div2" class="p100">
  abcd abcd abcd abcd abcd abcd
</div>
<hr>
<div id="div3" class="p150">
  Hello Hello Hello Hello Hello
</div>
<hr>
<div id="div4" class="p150">
  abcd abcd abcd abcd abcd abcd
</div>

您似乎是在说您想知道在单词与 div 重叠之前还剩下多少行。

如果是这种情况,您可以将宽度更改为 width:auto 或将其设置为 100%。这样,它将随着您的 'lines'.

扩展

通过 jquery 您可以通过以下方式获得每个 div 的宽度和高度:

$('#the-div-id').width();
$('#the-div-id').height();

和javascript:

document.getElementById('the-div-id').clientWidth;
document.getElementById('the-div-id').clientHeight;

The reason I need this is because I use a React List component...which accepts a fixed value for the height of a list item or a function to calculate the height of a list item depending on the index.

您好 :) 这里是 react-virtualized 的作者。

我认为您应该查看 CellMeasurer 组件。我为您所描述的用例创建了它。查看演示 here and docs here.

本质上,CellMeasurer 允许您将文本测量推迟到运行时。 List 在此之前可以对尚不可见的行使用估计大小。