转:https://www.cnblogs.com/yzg1/p/5089534.html
单行
1 overflow:hidden; 2 text-overflow:ellipsis; 3 white-space:nowrap
示例
文本溢出显示省略号,文本溢出显示省略号,文
多行
1.直接用css属性设置(只有-webkit内核才有作用)
语法
1 overflow: hidden; 2 text-overflow: ellipsis; 3 display: -webkit-box; 4 -webkit-line-clamp: 2; 5 -webkit-box-orient: vertical;
移动端浏览器绝大部分是WebKit内核的,所以该方法适用于移动端;
-
-webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
-
display: -webkit-box 将对象作为弹性伸缩盒子模型显示 。
-
-webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。
-
text-overflow: ellipsis 以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本。
示例
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省
2.利用伪类
语法
1 <div id="con"> 2 <span id="txt">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略</span> 3 <span class="t"></span> 4 </div> 5 <style> 6 #txt{ 7 display: inline-block; 8 height: 40px; 9 250px; 10 line-height: 20px; 11 overflow: hidden; 12 font-size: 16px; 13 } 14 .t:after{ 15 display: inline; 16 content: "..."; 17 font-size: 16px; 18 19 } 20 </style>
示例
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略
3.利用绝对定位和padding;(跨浏览器解决方案)
看到上例是不是觉得“哇,终于可以跨浏览器使用了”,但你这样想的时候有没有考虑过IE的感受?IE6/7是没有伪类的,还不赶快跪下对IE叫声“大哥”,虽然IE6已经退出市场,但是IE7还是需要兼容的,所以呢,我自己又想到了以下的办法,我这边测试了下感觉还行。
上代码
1 <p id="con2">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略<span class="t2">...</span> 2 </p> 3 <style> 4 #con2{ 5 position: relative; 6 height: 40px; 7 250px; 8 line-height: 20px; 9 overflow: hidden; 10 padding-right: 12px; 11 } 12 .t2{ 13 position: absolute; 14 right: 0; 15 bottom: 0; 16 } 17 </style>
这个方法的原理是:首先在包含文字的元素里,嵌入一个<span>...</span>
,然后包含文字的元素右侧留出...
的位置(padding-right
),最后利用绝对定位将...
定位至右侧的padding-right
区域
示例
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略...
4.其他
利用js插件来实现该功能,这里有俩款插件推荐,这篇主要介绍的是css方法,所以它们使用方法就不废话了。
问题
感谢村长指出了第二种和第三种都没有考虑到内容不足俩行的情况,这种情况下,我的上面说到的第二种和第三种方法,“...”依旧会存在,并不会隐藏。暂时还没有想出利用css来实现不到俩行隐藏的办法,sorry。所以如果存在不到俩行的情况尽量还是不要用了吧,可以使用js。这个就先放在这儿,什么时候想到办法再来修改
1 function mitulineHide(num,con){ 2 var contain = document.getElementById(con); 3 console.log(con); 4 var maxSize = num; 5 var txt = contain.innerHTML; 6 if(txt.length>num){ 7 console.log('1') 8 txt = txt.substring(0,num-1)+"..." 9 contain.innerHTML = txt; 10 }else{ 11 console.log("error") 12 } 13 };
该函数传入俩个参数:允许的最大文字数目
、包含文字的元素节点Id