html参考代码,加注释的部分就是实现多行文本省略的必要属性。
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
.comment_inner{
width: 200px
word-break: break-all
text-overflow: ellipsis
display: -webkit-box /** 将对象作为伸缩盒子模型显示 **/
-webkit-box-orient: vertical /** 设置或检索伸缩盒对象的子元素的排列方式 **/
-webkit-line-clamp: 3 /** 显示的行数 **/
overflow: hidden /** 隐藏超出的内容 **/
}
</style>
<body>
<div>
<p class="comment_inner">
word-break 属性规定自动换行的处理方法。normal(使用浏览器默认的换行规则。),break-all(允许在单词内换行。),keep-all(只能在半角空格或连字符处换行。)
</p>
</div>
</body>
</html>
如果想要在一行里实现“超出长度显示省略号”,是可以的。
overflow: hiddenwhite-space: nowraptext-overflow:ellipsis这几句css就可以,不要加上去的容器一定要写了宽度的
注意:这里实现的是“超出长度”,而不是“超出字数”,并且在一行里实现。
如果是两行或者三行的容器,想要纯用css实现这个方法,是没办法做到的。
可以提供两种方法,一是用程序输出时截字,二是用js判断字数截取。
JS的demo如下:
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<title>Examples</title>
<style type="text/css">
.demo{width:100px}
</style>
</head>
<body>
<div class="demo" id="demo">怎么显示两行或三行文字,然后多出的部分省略号代替?</div>
<script>
// js无法直接通过class获取对象,必须自己写一个方法,这样效率会非常低,原生js里最好用id获取,
// 直接用id获取domo对象
var oBox=document.getElementById('demo')
// slice() 方法可从已有的数组中返回选定的元素。
// 您可使用负值从数组的尾部选取元素。
// 如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
// 此处需要根据需求自行修改slice()的值,以达到要显示的内容
var demoHtml = oBox.innerHTML.slice(0,10)+'...'
// 填充至指定位置
oBox.innerHTML = demoHtml
</script>
</body>
</html>
只能在第一行内显示省略,不能在第二行内换行
<div style="width:200px overflow:hidden white-space:nowrap text-overflow:ellipsis">测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试</div>