兼容性不好:*注意容器不要使用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循环
