CSS文本溢出显示省略号

转: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

原文地址:https://www.cnblogs.com/zhaobao1830/p/9143582.html