兼容性不好:*注意容器不要使用padding-bottom,否则多出的文字会显示
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
第二种办法:
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#view{
line-height: 25px;
}
</style>
</head>
<body>
<div id='view' style='border:1px solid red;width:200px;height:50px;overflow:auto'></div>
<script>
s = '这是一个文本这是一个文本这是一个ssssss文本这是一个文本sss这是一个文本这是一个文本'
el = document.getElementById('view');
n = el.offsetHeight;
for(i=0; i<s.length; i++) {
el.innerHTML = s.substr(0,i);
if(n < el.scrollHeight) {
el.style.overflow = 'hidden';
el.innerHTML = s.substr(0,i-3) + '...';
break;
}
}
</script>
</body>
</html>
首先我们需要弄清楚offsetHeight和scrollHeight所表示的高度:
1溢出显示滚动条时——-scrollHeight>offsetHeight
2没有溢出时——scrollHeight=offsetHeight
el = document.getElementById(‘view’); n = el.offsetHeight;表示的是取到当前包裹文本的父级元素的高度, el.innerHTML = s.substr(0,i);表示在for循环中取出长度递增的文段, ‘这’—> ‘这是’ —> ‘这是一’,当n < el.scrollHeight也就是 当前文本高度<滚动条内的内容的高度,代表着刚好达到溢出的界限,此时执行if内的语句el.style.overflow = ‘hidden’;el.innerHTML = s.substr(0,i-3) + ‘…’; break;将父级元素view的overflow设置为hidden,并且将末尾的三个文字用…取代,同时跳出for循环