字符串截断动态设置

问题描述:

我正在使用Symfony2,Twig和Twitter Bootstrap。我还没有找到任何解决方案,以解决以下问题。字符串截断动态设置

在我的web应用程序的某些部分,我使用提交显示的比较(使用百分比)。

对于那些太长,不适合在“保留”空间对他们来说领域的那些价值,我使用截断字符串枝条或Javascript功能,使他们能够适当地配合。现在的问题是:

有没有什么办法,以使该截断的长度根据显示的宽度动态设置?请注意,由于表格在窗口大小调整时动态显示和重置,因此这些宽度将随时更改。

任何方式动态地截断字符串?

一些代码块我使用:

TWIG:

JAVASCRIPT:

// Truncates a string and adds "..." 
function truncate_string(str, len){ 
    if (str.length > len) 
     return str.substring(0, len) + "..."; 
    else 
     return str; 
} 

的解决方案将是动态地设置,根据的宽度len参数TD以及要显示的字符串的宽度。

根据字体大小和类型在我们知道通过jQuery的,CSS或什么的,一个字符串的准确宽度?或者换句话说,我们如何知道一个字符串的最大数量将能够具有一定的像素宽度?

+0

尝试使用隐藏的div用于确定文本宽度:http://*.com/a/118251/1538708 – adamb

有一个jQuery plugin做什么你问。除JavaScript之外,这是无法实现的。也许一个CSS向导可能能够通过使用overflowafter属性来构建解决方案。通过我的判断,如果你有附加的元素每个字符串一个固定的字符串(满弦永远不会被显示),只会工作。

还检查了该older SO answer这是关系。

可以extend twig filter创建自己的过滤器或编辑CSS样式/ HTML这样

CSS:

table td{ 
    position:relative; 
    overflow:hidden; 
} 
table td > span{ 
    display: inline-block; 
    position:relative; 
    height: 18px; 
    min-width: 200px; 
} 

HTML:

<table> 
<tr> 
    <td><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc imperdiet ante magna, non pretium sem. </span></td> 
    <td><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc imperdiet ante magna, non pretium sem. </span></td> 
</tr> 
<tr> 
    <td><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc imperdiet ante magna, non pretium sem. </span></td> 
    <td><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc imperdiet ante magna, non pretium sem. </span></td> 
</tr> 

所以,你的TD内容自动调整大小,不需要截断文本。