我正在尝试使字符串适合确定的区域(td
)而不会破坏线条。问题是:它需要......
N
种决议...
(在不需要时不添加)font-size
,font-weight
和font-family
根据Novon's question的答案,我制作了以下代码:
CSS (//只是添加一些样式来打破这一行)
.truncated { display:inline-block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
jQuery (//查找包含.truncated
元素的所有td。获取{{1}的真实宽度(通过删除内容并重新添加)如果需要,在td
)上应用minWidth
td
结果(如上面代码所预期的)是:
但它应该是:
我在想,也许会尝试找到字符串的第一个jQuery('.truncated').closest('td').each(function() {
var text = jQuery(this).text();
var widthOriginal = jQuery(this).width();
var widthEmpty = jQuery(this).text('').width();
jQuery(this).text(text);
if(widthOriginal >= widthEmpty){
var width = (parseInt(widthEmpty) - 10) + 'px';
jQuery(this).css('maxWidth', width);
jQuery(this).text(text + '...');
}
});
并删除其余部分,但没有找到办法(根据我的口味,这是很多“解决方法”)。有没有更好的方法呢?
答案 0 :(得分:10)
使用css text-overflow
属性可以轻松实现单行文本截断,所有主流浏览器都支持该属性,包括自版本6以来的IE。
事情是text-overflow
单独做得不多。它仅定义当文本溢出容器时会发生什么。因此,为了查看结果,我们首先需要通过将文本强制转换为单行来使文本溢出。设置容器的overflow
属性也很重要:
.truncated {
display: block;
white-space: nowrap; /* forces text to single line */
overflow: hidden;
text-overflow: ellipsis;
}
jsFiddle示例:https://jsfiddle.net/x95a4913/
文本溢出文档:https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow
答案 1 :(得分:7)
您可以使用纯CSS执行此操作,请参阅此链接以供参考:
将这些添加到您的css:
.truncated {
display: -webkit-box;
-webkit-line-clamp: 1; // amount of line you want
-webkit-box-orient: vertical;
}
或者你可以试试clamp.js
答案 2 :(得分:6)
text-overflow: ellipsis
似乎是纯CSS解决方案 http://www.w3schools.com/cssref/css3_pr_text-overflow.asp
答案 3 :(得分:0)
将文本换行两次以实现此目的:
<style type="text/css">
.relative_wrap {
height: 1em;
position: relative;
}
.absolute_wrap {
position: absolute;
left: 0px;
right: 0px;
bottom: 0px;
overflow: hidden;
text-overflow: ellipsis;
top: 0px;
white-space: nowrap;
}
</style>
<table>
<tbody>
<tr>
<td>
<div class="relative_wrap">
<div class="absolute_wrap">
LONG TEXT HERE
</div>
</div>
</td>
</tr>
</tbody>
</table>
由于您使用jQuery,因此很容易:
$('.truncated').wrap('<div class="relative_wrap"><div class="absolute_wrap"></div></div>');
答案 4 :(得分:0)
如果您将表格布局设置为固定而td
溢出为hidden
,那么当div
的滚动时,您可以将省略号添加为右浮动td
width大于其客户端宽度。
这是CSS,其中包括防止表格渗透的样式:
table {
table-layout:fixed;
white-space:nowrap;
width:500px;
border-spacing: 0px;
border-collapse: separate;
}
td {
overflow:hidden;
border:1px solid #ddd;
padding:0px;
}
.hellip {
padding-left:0.2em;
float:right;
background:white;
position:relative;
}
jQuery的:
$('td').each(function() {
if($(this)[0].scrollWidth > $(this).width()) {
$(this).prepend('<div class="hellip"">…</div>');
}
});