是否可以使用CSS将文本长度限制为“n”行(或在垂直溢出时剪切)。

文本溢出:省略号;仅适用于1行文本。

原文:

Ultrices natoque mus mattis、aliquam、cras in pellentesquetincidunt elit purus lectus、vel ut aliquet、elementum nunc乌尔纳修女院!坐下!图比斯岛莫斯·廷西杜特!Dapibus sed aenean、magna sagitis、lorem velit

所需输出(2行):

Ultrices natoque mus mattis、aliquam、cras in pellentesquetincidunt elit purus lectus,velut aliquet,elementum。。。


当前回答

基本示例代码,学习代码很容易。检查样式CSS注释。

表tr{显示:柔性;}表tr td{/*启动*/显示:内联块;/*<-在显示css中防止<tr>*/文本溢出:省略号;空白:nowrap;/*完*/填充:10px;宽度:150px;/*空间大小限制*/边框:1px实心黑色;溢出:隐藏;}<表><tbody><tr><td>Lorem ipsum dolor坐amet,consectetur adipiscing elit。Nulla egestas erat ut luctus posuere。Praesent和commodo eros。在tellus中,Vestibulum eu nisl vel dui ultrices ultricies vel。</td><td>Praesent vitae tempus nulla。Donec vel porta velit公司。Fusce mattis enim前任Mauris eu malesuada ante。Aenean id aliquet leo,nec ultricies tortor。Curabitur non mollis elit。Morbi euismod ante amet iaculis pharetra。Mauris id ultricies urna。崩溃尼西多尔。Curabitur tellus erat,调味品ac enim non,varius tempor nisi。Donec dapibus justo odio,sed consequat eros feugiat feugiat。</td><td>Pellentesque mattis consequat ipsum sed sagitis。Pellentsque consectetur前庭odio,aliquet auctor ex elementum sed。悬疑门massa nisl,quis interstie libero auctor varius。Ut erat nibh,流苏状舌舌Ut,iaculis interdum sapien。我的格言,坐在我的圣经中间。</td></tr><tr><td>Sed viverra massa laoret urna dictum,et frigilla dui调戏。杜伊斯·波塔(Duis porta)、弗内纳蒂斯前舌(ligula ut venenatis pretium)、智人(sapien tellus blandit felis)、非龙虾(non-lobortis orci erated justo)。Vivamus hendrerit、iaculis vehicula、nibh nisi fermentum auge、sagitis的quamnibh dui等人。</td><td>Nullam mollis nullaa justo,nec tincidunt urna suscipit non。Donec malesuada dolor non dolor interdum,id ultrices neque egestas。整只怀孕大熊猫坐在直径为欧盟的地方。Etiam dignissim坐在自由大熊猫的地方,在consequat est阿利奎特。</td><td>猫的前庭,对其他动物来说,是一种非常重要的动物。Fusce egestas,volutpat impredite中的兽人,risus velit convallis sapien,sodales lobortis risus lectus id leo。Nunc vel diam vel Nunc congue finibus。龟头前庭,咽鼓管,耳鼻喉舌。Donec rutrum purus在tincidunt sagitis。只要你愿意就好了。</td></tr></tbody></table>

其他回答

据我所知,这只可能使用高度:(一些em值);溢出:隐藏,即使这样它也不会有幻想。。。最后。

如果这不是一个选项,我认为没有一些服务器端预处理(很难,因为文本流不可能可靠地预测)或jQuery(可能但可能很复杂)是不可能的。

我有一个很好的解决方案,但省略号使用了渐变。当你有动态文本时,它会起作用,所以你不知道它是否足够长,需要一个椭圆。优点是您不必进行任何JavaScript计算,它适用于包括表格单元格在内的可变宽度容器,并且是跨浏览器的。它使用了一些额外的div,但它很容易实现。

标记:

<td>
    <div class="fade-container" title="content goes here">
         content goes here
         <div class="fade">
    </div>
</td>

CSS:

.fade-container { /*two lines*/
    overflow: hidden;
    position: relative;
    line-height: 18px; 
    /* height must be a multiple of line-height for how many rows you want to show (height = line-height x rows) */
    height: 36px;
    -ms-hyphens: auto;
    -webkit-hyphens: auto;
    hyphens: auto;
    word-wrap: break-word;
}

.fade {
        position: absolute;
        top: 50%;/* only cover the last line. If this wrapped to 3 lines it would be 33% or the height of one line */
        right: 0;
        bottom: 0;
        width: 26px;
        background: linear-gradient(to right,  rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%);
}

博客文章:http://salzerdesign.com/blog/?p=453

示例页面:http://salzerdesign.com/test/fade.html

如果你想专注于每一封信,你可以这样做,我提到这个问题

函数truncate(源,大小){返回源.length>size?source.sslice(0,大小-1)+“…”:源;}var text=truncate('truncate text to fit in 3 lines',14);console.log(文本);

如果你想专注于每个单词,你可以这样做+空格

consttruncate=(title,limit=14)=>{//14是默认参数常量newTitle=[];if(title.length>limit){title.split(“”).reduce((acc,cur)=>{如果(acc+cur.length<=极限){newTitle.push(cur);}返回acc+cur.length;}, 0);return newTitle.join(“”)+“…”}返回标题;}var text=truncate('truncate text to fit in 3 lines',14);console.log(文本);

如果你想专注于每个单词,你可以这样做+没有空格

consttruncate=(title,limit=14)=>{//14是默认参数常量newTitle=[];if(title.length>limit){Array.prototype.slice.call(title).reduce((acc,cur)=>{如果(acc+cur.length<=极限){newTitle.push(cur);}返回acc+cur.length;}, 0);return newTitle.join(“”)+“…”}返回标题;}var text=truncate('truncate text to fit in 3 lines',14);console.log(文本);

工作跨浏览器解决方案

这个问题多年来一直困扰着我们大家。

为了在所有情况下都有所帮助,我列出了仅CSS的方法,以及一个jQuery方法,以防CSS警告出现问题。

这里是我提出的一个仅限CSS的解决方案,它在所有情况下都有效,但有一些小的注意事项。

基本原理很简单,它隐藏跨度的溢出,并根据Eugene Xa建议的线高度设置最大高度。

然后在包含div之后有一个伪类,它很好地放置了省略号。

注意事项

此解决方案将始终放置省略号,无论是否需要省略号。

如果最后一行以结尾句结尾,你将以四个点结尾。。。。

您需要对文本对齐方式感到满意。

省略号将位于文本的右侧,看起来很草率。

代码+代码段

小提琴演奏家

.text(文本){位置:相对;字体大小:14px;颜色:黑色;宽度:250px;/*可以是你喜欢的任何东西*/}.text凹面{位置:相对;显示:内联块;换行:换行;溢出:隐藏;最大高度:3.6em;/*(要显示的行数)*(行高)*/线高:1.2em;文本对齐:对齐;}.text.省略号::之后{content:“…”;位置:绝对;右:-12px;底部:4px;}/*psudo类的右侧和底部是基于各种因素、字体大小等的像素。根据自己的需要调整*/<div class=“text省略号”><span class=“text concat”>Lorem ipsum dolor坐amet,笔尖eleifend cu his,porro fugit mandamus no mea。坐着讲故事,每个人都有一段对话,每个人也有一段相扑。在nominavi percula harsti ius,在sonet tincidunt,cu pose facilisis eos。每一次选择权争议,都没有任何人的意见。Eu已经得出结论,最初的决定是在。Virtute feugait eivim公司。社区诚实互助协会(Commune honestatis accommodare pri ex.Ut est civilbus accumsam),原则上的概念,以及两个案例。在双人间聚会。我已经为你的职业生涯做好了准备。重要的是,现场设施,包括现场脚本。</span></div>

jQuery方法

在我看来,这是最好的解决方案,但不是每个人都可以使用JS。基本上,jQuery将检查任何.text元素,如果有比预设的max-var更多的字符,它将删除其余字符并添加省略号。

对于这种方法没有任何警告,但是这个代码示例仅用于演示基本思想-我不会在生产中使用它,除非对其进行改进,原因有两个:

1) 它将重写.text元素的内部html。无论是否需要。2) 它不需要检查内部html是否没有嵌套的元素,因此您非常依赖作者来正确使用.text。

已编辑

感谢您的捕获@markzzz

代码段(&S)

小提琴演奏家

setTimeout(函数){var最大值=200;变量tot,str;$('.text').each(函数){str=字符串($(this).html());tot=字符串长度;str=(总计<=最大值)? 字符串:str.substring(0,(最大值+1))+“…”;$(this).html(str);});},500); // 延迟仅作为示例。.text(文本){位置:相对;字体大小:14px;颜色:黑色;字体系列:无衬线;宽度:250px;/*可以是你喜欢的任何东西*/}<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><p class=“text”>老年人往往会忘记年轻时的想法;他们忘记了思维跳跃的敏捷,年轻人直觉的大胆,新鲜洞察力的敏捷。他们习惯于各种各样的理性,因为这不仅仅是经验的积累,老年人认为自己比年轻人更聪明。</p><p class=“text”>老年人往往会忘记年轻时的想法;</p><!-- 工作跨浏览器解决方案这是一种jQuery方法,用于将文本正文限制为n个单词,并以省略号-->结尾

这对我有用:

第二部分{宽度:200px;}p型{显示:块;/*非webkit的回退*/显示:-webkit框;高度:2.6em;/*非webkit的回退,线宽*2*/线高:1.3em;-webkit线夹:2;/*如果更改此设置,请确保更改回退线的高度和高度*/-webkit框方向:垂直;溢出:隐藏;文本溢出:省略号;}<div><p>Lorem ipsum dolor坐amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore</p><div>