文本截断

517 阅读1分钟

update:2020年3月24日

文本截断是适配移动端常见的UI需求之一,是单行截断还是多行截断,多行截断又分按行高截断合适按行数截断?

一、单行截断

方法一:

对当前文本的标签:

display: block/inline-block;

width: 100px;

white-space: nowrap;

overflow: hidden;

text-overflow: ellipsis;

优点:兼容性好,基本不存在兼容性问题;

缺点:只能单行截断;在部分框架中,设置nowrap会出现其他样式问题;

方法二:

对当前文本标签:

display: -webkit-box; 

 -webkit-line-clamp:1;

 overflow: hidden;

 text-overflow: ellipsis;

 -webkit-box-orient: vertical;

优点:可以多行截断,并且是响应式的,可以适用于大多数移动端;

缺点:有兼容性问题,值适用于内核为webkit的浏览器,其他内核的浏览器会有兼容问题;

二、多行截断-----按行数截断

方法一:

display: -webkit-box;

-webkit-line-clamp:3;

overflow: hidden;

text-overflow: ellipsis;

-webkit-box-orient: vertical;

三、多行截断-----按高度截断

方法一:

设置父元素:

max-height: 40px;

overflow: hidden;

设置当前文本元素:

line-height: 20px;

优点:不存在兼容性问题

缺点:超过直接隐藏,显得没有过渡

方法二:  

上面的方法一实现了固定高度截断,但是没有省略号,此方法使用伪类,添加了省略号:

.demo { 

    position: relative;

    line-height: 20px;

    height: 40px;

    overflow: hidden; 

 }

 .demo::after { 

     content: "...";

     position: absolute; 

     bottom: 0; 

     right: 0; 

     padding: 0 20px 0 10px;

 }

四、参考文章:

mp.weixin.qq.com/s/zAvDSqUQo…