一个元素可以包含多少行
How many lines an Element can contain
假设我有一个包含height: 150px
和width:300px
的div
元素。是否有可能计算有多少行文本可以驻留在它没有overflow
,其中文本有预定义的font-size
, line-height
和其他文本属性?
My Main Objective:
我有这样的html:
<div id="parent">
<div>[Title]</div>
<div>[Description]</div>
<div>[Buttons]</div>
</div>
在[Description]
div
中,我必须精确地显示八行的描述,其中描述来自DB,大小可能多或少。最后一行将在末尾以...
截断。我怎样才能实现我的目标?
请帮帮我。
是的,有一种方法只显示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;
}
}
<<p> 生活例子/strong> 如果你需要支持IE, getClientRects()[0]
不会有height
属性,但它有bottom
和top
,你可以减去它们来得到高度。
很有趣,如果你有任何问题,请在评论中提问。
仅当您使用等宽字体(具有固定字符尺寸的字体)时。如果你不使用等宽字体,而又需要很高的准确性,那么你可能需要通过创建和读取文本图像或读取字符图来寻找图像类型解决方案。至少可以这么说,这太过分了。
编辑:我只是想把你需要看的东西贴出来,以便进行准确的测量
Imagick::queryFontMetrics <——谷歌一下,读几页,PHP文档不是很有用
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 货币代码为欧元-金额的格式不应包含小数
- 如何包含特定于每个视图angularjs的javascript文件
- 我如何修复包含在captcha的addthis中的错误
- 正在注入包含JS的HTML
- Json数据包含日期和时间格式
- Angular js-返回一个包含类似
- jQuery/JS包含运算符或类似运算符
- 如果href包含X,请更改href
- JavaScript数组包含一个值
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 在Meteor项目中安装并包含npm模块后出错
- 传递包含'%的参数'在URL中
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- 如何首先设置样式<td>表中包含在窗体中的元素
- 我必须在外部脚本中包含 $(document) .ready (function() 多少次
- 检查javascript中包含多少单词的字符串
- 一个元素可以包含多少行
- 检查一个URL包含某个字符多少次