单行文本省略:
{
overflow:hidden; //超出部分隐藏
white-space:nowrap; //强制不换行
text-overflow:ellipsis //省略号
};
写在css里,很简单的三行代码,但是注意,必须为父元素设置宽度,当然也必须得是块元素了。
多行文本省略,若使用上面的方法,只会显示第一行的文本,后面的全部省略,与期望不符,比对多种方法后,推荐用JavaScript进行设置,具体代码如下:
<div id='text'>
/* 多行文本内容 */
</div>
<script type="text/javascript">
function textHide(num,con){ //定义函数
var contain = document.getElementById(con);
var txt = contain.innerHTML;
if(txt.length>num){
txt = txt.substring(0,num-1)+"...";
contain.innerHTML = txt;
}else{
console.log("文本未超出,无需省略")
}
};
textHide(100,'text'); //调用函数
</script>
参数1(num)是允许最大文字数目,参数2(con)是元素节点的id名称
原理:
- 根据节点id,获取文本的全部内容
- 比较文本的长度(txt.length)和目标长度(num)之间的大小
- 若超出目标长度,截取目标长度的内容(subtring方法),并在后面拼接“...”字符串,替换当前文本内容
当然,还是要块元素,并设置宽和高。