首页 > 其他分享 >多行文本溢出显示省略号的方法

多行文本溢出显示省略号的方法

时间:2022-09-21 18:14:11浏览次数:85  
标签:多行 box 省略号 ... webkit ellipsis overflow 文本 line

两种方法:

一、

利用WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端。

display: -webkit-box; 
-webkit-box-orient: vertical;    //方向
-webkit-line-clamp: 3;         //设置在第几行添加省略号
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;

1、-webkit-line-clamp限制在一个块元素中文本显示的行数。它需要组合其他的WebKit属性。常见结合属性:

2、display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。

3、-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。

代码如下:

  <div class="ellipsis2">这是一串很长的文字,现在开始哦。第二行文字在这里开始了,第三行文本内容内容内容文字</div>
  <div class="ellipsis3">这是一串很长的文字,现在开始哦。第二行文字在这里开始了,第三行文本内容内容内容文字省略开始。</div>

  //css样式
  .ellipsis3 {
    width: 200px;
    max-height: 5em;
    line-height: 1.5;
    margin: 20px;
    outline: 1px solid #ff9900;
    text-overflow: -o-ellipsis-lastline;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;  
  }

  .ellipsis2 {
    width: 200px;
    max-height: 5em;
    line-height: 1.5;
    margin: 20px;
    outline: 1px solid #ff9900;
    text-overflow: -o-ellipsis-lastline;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;  
  }

效果图:

 

 PS:注意:当-webkit-line-clamp分别设置为2和3时候,文本的省略号展示位置是不同的。因此: 我们在使用该方法时候一定要计算好高度,确保省略号在最后一行,以免出现样式问题。

二、

思路是这样的:

1、在框右下角放个...,盖住右下角的内容

2、在内容尾,跟随一个mask,盖住上述的...,内容超出时,mask被推出,显示...

具体原理如下:

首先我们的最终实现方案是,我们最终的方案是要保证当且仅当内容溢出时,显示...省略。

那么应该如何实现这个功能呢? 假如我们的内容只能承载20个字,我们可以拿个东西盖住...,当且仅当内容溢出时,不盖住...。那么如果实现对...的覆盖呢? 我们可以采用“推”的方法,想象一下,我们找个东西盖在...上,然后,我们一直在这个东西前面添加我们的文本内容,当把这个东西推到框外时,就意味着文本内容溢出了,...需要展示。而在此之前,由于东西一直处于文本长度<20的情况,所以 它将一直盖住了...,也就是说,内容未溢出时,不展示...

实现代码:

<div class="ellipsis">这是一串很长的文字</div>
<div class="ellipsis">这是一串很长的文字,现在开始哦。第二行文字在这</div>
<div class="ellipsis">这是一串很长的文字,现在开始哦。第二行文字在这里开始了,从“里”字开始,就应该被...省略了。</div>

//css样式
<style type="text/css">
  .ellipsis {
    margin: 20px;
  }

  .ellipsis {
    position: relative;
    width: 200px;
    max-height: 3em;
    line-height: 1.5;
    overflow: hidden;
    outline: 1px solid #ff9900;
  }
  .ellipsis::before {
    content: '...';
    position: absolute;
    z-index: 1;
    bottom: 0;
    right: 0;
    width: 1.5em;
    padding-left: 3px;
    box-sizing: border-box;
    background-color: white;
  }
  .ellipsis::after {
    content: '';
    display: inline-block;
    position: absolute;
    z-index: 2;
    width: 100%;
    height: 100%;
    background-color: white;
  }
</style>

效果如下:

 

 引:https://www.jianshu.com/p/07bcb00aa0ee

        https://www.cnblogs.com/xlin021/p/12238980.html

标签:多行,box,省略号,...,webkit,ellipsis,overflow,文本,line
From: https://www.cnblogs.com/morango/p/16580781.html

相关文章