字符串截断动态设置
问题描述:
我正在使用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或什么的,一个字符串的准确宽度?或者换句话说,我们如何知道一个字符串的最大数量将能够具有一定的像素宽度?
答
有一个jQuery plugin做什么你问。除JavaScript之外,这是无法实现的。也许一个CSS向导可能能够通过使用overflow
和after
属性来构建解决方案。通过我的判断,如果你有附加的元素每个字符串一个固定的字符串(满弦永远不会被显示),只会工作。
还检查了该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内容自动调整大小,不需要截断文本。
尝试使用隐藏的div用于确定文本宽度:http://*.com/a/118251/1538708 – adamb