众所周知,文本溢出显示省略号用CSS就可以:
单行文本:
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
display:block;
多行文本:
overflow : hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
如果想中间显示省略号呢??
现在需求是,一段文本很长,但最后有一个关键词很重要,而且改关键词有括号括起来的,需要显示出来,所以如果文本过长,不单只做省略号处理,还要把括号里面的内容显示出来。
// 中间显示省略号,截取显示括号内容 var str = $(".text").text(); var last = 0; var all = str.length; var fisrt = str.substring(0,6); // 没有中文括号( if (str.lastIndexOf('(') == -1) { // 也没有英文括号( if (str.lastIndexOf('(') == -1) { last = all - 5; }else{ // 有英文括号(,就从英文括号开始截取 last = str.lastIndexOf('('); } }else{ last = str.lastIndexOf('('); } // 如果长度大于13个字符才显示省略号 if (all > 13) { $(".text").text(fisrt+" ... "+str.substring(last,all)); }
上面的代码意思是:如果文本长度大于13个字符、文本内包含中文或英文括号就会截取括号到最后一个字符的内容,默认截取前6个字符跟省略号...拼接起来,得到最终的中间省略号,前面6个字,后显示括号内容的效果。
最后:
网上看了好像css没有显示前面跟后面并且中间显示省略号的属性,所以用js截取拼接得到对应的效果。