CSS控制文字超出部分省略号显示

一:单行文本显示不完时,我们只需要设置单行文本的宽度,不允许换行,溢出隐藏及换行省略四个属性即可:

      p{
            max-width: 100px;
            overflow:hidden;
            text-overflow:ellipsis;
            /*禁止换行显示*/
            white-space:nowrap;
           background-color:#ffe51a;
        }
<p>哈哈哈哈哈哈哈,哈哈哈哈哈,哈哈哈哈哈哈哈</p>

二:当我们想要设置多行文本显示不完省略号时:

     p {
            width: 100px;
            overflow:hidden;
            text-overflow:ellipsis;
            display:-webkit-box;
            /*控制在3行*/
            -webkit-line-clamp:3;
            -webkit-box-orient:vertical;
            background-color:#ffe51a;
        }
-webkit-line-clamp 其实是一个不规范属性,使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端;

它用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他外来的WebKit属性。
display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
text-overflow,可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本 。

三:使用伪元素:after实现句尾省略号效果,但是这种办法未超出部分也会显示省略号,可以使用js控制进行兼容

     p{
            position: relative;
            max-width: 100px;
            line-height: 20px;
            max-height: 40px;
            overflow: hidden;
        }
        p::after{
            content: "...";
            position: absolute;
            bottom: 0;
            right: 0;
            padding-left: 40px;
            background: -webkit-linear-gradient(left, transparent, #fff 55%);
            background: -o-linear-gradient(right, transparent, #fff 55%);
            background: -moz-linear-gradient(right, transparent, #fff 55%);
            background: linear-gradient(to right, transparent, #fff 55%);
        }

说明:
1.将height设置为line-height的整数倍,防止超出的文字露出。
2.给p::after添加渐变背景可避免文字只显示一半。
3.由于ie6-7不显示content内容,所以要添加标签兼容ie6-7(如:<span>…<span/>);兼容ie8需要将::after替换成:after。

四:简单粗暴的方法,使用js截取固定的要显示字符的个数,判断字符的长度是否大于要显示的字数,大于则截取并加上省略号,否则全部显示

<p><script>document.write("哈哈哈哈哈哈哈,哈哈哈哈哈,哈哈哈哈哈哈哈".substring(0,10)+"...")</script></p>

最多显示十个字符,这样省略号不一定是在行尾,不推荐。

原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):