javascript - 根据宽度(以像素为单位)缩短长文本

标签 javascript gwt label

我想将很长的描述缩短到可用的表列宽度。我有以像素为单位的列宽信息。现在我想将此度量转换为字符数,这样我就可以将文本缩短到指定的数量。

我不必 100% 正确,近似的假设也可以。

最佳答案

将文本包裹在 DIV 的单元格中。这将告诉您 DIV 内的文本是否大于单元格:

<div id='test' style='width:200px;height:100px;overflow:hidden'>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse at felis. Etiam ullamcorper. Aenean fringilla, eros eu dapibus tristique, erat lacus vestibulum metus, nec pharetra leo ante et quam. Nunc ac mi molestie justo placerat laoreet. Morbi eget dolor. Curabitur pretium, mi quis iaculis molestie, dolor ligula sagittis orci, at sodales quam dolor quis sem. Suspendisse vitae risus. Maecenas vestibulum dolor vel augue. Sed purus. Ut nisi massa, vestibulum id, lobortis eget, aliquet eu, enim. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.</p>
</div>
<script type="text/javascript">
alert($('test').scrollHeight)
</script>

如果您想在单词末尾 chop 并添加省略号 (...),您可以在脚本中开始删除单词,直到高度等于或小于容器。 (我使用 Protoype 作为 $ 快捷方式)

这是一个工作示例:

<div id='test' style='width:300px;height:100px;overflow:hidden'>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse at felis. Etiam ullamcorper. Aenean fringilla, eros eu dapibus tristique, erat lacus vestibulum metus, nec pharetra leo ante et quam. Nunc ac mi molestie justo placerat laoreet. Morbi eget dolor. Curabitur pretium, mi quis iaculis molestie, dolor ligula sagittis orci, at sodales quam dolor quis sem. Suspendisse vitae risus. Maecenas vestibulum dolor vel augue. Sed purus. Ut nisi massa, vestibulum id, lobortis eget, aliquet eu, enim. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
</div>
<script type="text/javascript">
function shorten(element) { 
    if($(element).scrollHeight>$(element).getHeight()) {
        var myText = $(element).innerHTML.split(" ")
        myText.length=myText.length-2
        $(element).update(myText.join(" ")+" ...")
        window.setTimeout('shorten("'+element+'")',1)
    }

}
shorten('test')
</script>

您可以通过按句点而不是空格来分割句子,但如果找不到句点,或者 chop 后剩下的内容太短,则需要后备。

关于javascript - 根据宽度(以像素为单位)缩短长文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/345042/

相关文章:

javascript - 如何一键重置所有按钮的值

java - gwt 混淆编译重命名

java - 如何从代码访问 MenuBar 的 CSS 样式规则 - GWT

swift - 在新行后重新排列 UILabel

javafx - 如何在布局之前获取标签的尺寸?

javascript - 如何在 onclick 函数中传递值

javascript - 在我的案例中如何向第一个 html 元素添加一个类?

javascript - 如何多次触发或调用jquery加载函数?

java - 从 Flex 小部件访问 GWT 功能

jQuery Tag-It - 使用值和标签对象列表