php - 一个元素可以包含多少行

标签 php javascript jquery html css

假设我有一个 div 元素,其 height: 150pxwidth:300px。是否可以计算在没有 overflow 的情况下可以容纳多少行文本,其中文本已经预定义了 font-sizeline-height 和其他文本属性?

我的主要目标:

我有这样的 html:

<div id="parent">
    <div>[Title]</div>
    <div>[Description]</div>
    <div>[Buttons]</div>
</div>

[Description] div 中,我必须准确显示 八行 描述,其中描述来自 DB,大小可能或多或少.最后几行将在末尾 chop ... 。我怎样才能实现我的目标?

请帮助我。

最佳答案

是的,有一种方法可以只显示 8 行。基本上,您可以做的是单独添加每个单词,每次添加单词时,检查您的 div 的高度是否发生了变化。统计变化了多少次,超过8次就停止加词。

var text = "Lorem ipsum dolor sit amet...";

var changesInHeight = 0,
    prevHeight = 0,
    words = text.split(" ");
    div = document.getElementsByTagName("div")[0];
for(var i = 0; i < words.length; i++) {
    var prevText = div.innerHTML;
    div.innerHTML += words[i] + " ";

    var height = div.getClientRects()[0].height;
    if (height > prevHeight)
        changesInHeight++;
    prevHeight = height;

    if (changesInHeight > 8) {
        div.innerHTML = prevText + "...";
        break;
    } 
}

Live example

如果你需要支持 IE,getClientRects()[0] 将没有 height 属性,但它有一个 bottomtop 您可以减去它以获得高度。

这很有趣,如果您有任何问题,请随时在评论中提问。

关于php - 一个元素可以包含多少行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298643/

相关文章:

javascript - 如何定位特定 <DIV> 的 jQuery 对话框 "Center and Middle"

javascript - 谷歌图表垂直轴和工具提示值格式

jquery - 视频播放完毕后,开始播放音频吗?

php - MySQL PHP 查询无效 - 找不到列

php - 无法获取 url 的最后一部分

javascript - 如何在一个函数中抛出错误以被另一个函数捕获?

javascript - Appcelerator/Titanium - Javascript 变量是否污染了 Controller 文件中的全局范围?

php - 为什么一个查询返回正确的值,而紧随其后的查询返回 0?

php - 多个复选框内的 codeigniter

javascript - 如何使用 "controller as"语法从基本 Controller 继承?