博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文本超出内容区域后用三个省略号代替
阅读量:4320 次
发布时间:2019-06-06

本文共 1250 字,大约阅读时间需要 4 分钟。

1.固定宽高的

  当div的宽高被固定了, 我们只需要给它加三个属性: 

overflow:hidden;    //(超出部分隐藏)white-space:nowrap;   //(强制不换行) text-overflow:ellipsis;   // (用三个省略号代替)

  上面这种方法没有兼容性问题,但是有局限性,就是文本只能有一行,要是遇到下面这种情况怎么做呢?

  就需要用到下面这种办法了

2.不固定宽高的

  我们需要给div设置4个属性:

display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;

说明:

display: -webkit-box;  // (box-flex布局)-webkit-box-orient: vertical; // (垂直排列子元素) -webkit-line-clamp: n; // (n>0) (显示几行) overflow: hidden; //(超出部分隐藏)

这种方法可以实现上面那种效果,不过有兼容性问题。

 

另外 同级的DOM不能设置padding-bottom属性,否则还是会看到超过 n 行的文字。如果需要设置padding,可以在外层再套一层 div 或者 用伪类来控制内间距。

 

还有一个细节问题,也是工作中遇到的。

在超出设定的 n 行 和 正常显示(不超出的情况)显示的时候 内容最后一行的间距减少了。为了统一间距,目前解决的办法是通过js控制下。产品就要纠结这个间距,真没办法,所以只有想办法处理咯。

function fixLineClamp(doms, marginBottom){    if(doms.scrollHeight > parseInt(getComputedStyle(doms).height)){       doms.style.marginBottom = marginBottom    }}fixLineClamp(document.querySelector('.detail-empty'), '6px')

多列

function fixLineClamp(doms, marginBottom){   [].slice.call(doms).forEach(function(dom){    if(dom.scrollHeight > parseInt(getComputedStyle(dom).height)){      dom.style.marginBottom = marginBottom     }   })}fixLineClamp(document.querySelectorAll('.itemlist .content'), '8px')

 

转载于:https://www.cnblogs.com/zuobaiquan01/p/8631661.html

你可能感兴趣的文章
导航控制器的出栈
查看>>
玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]
查看>>
iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置
查看>>
Delphi消息小记
查看>>
HNOI2016
查看>>
JVM介绍
查看>>
将PHP数组输出为HTML表格
查看>>
Java中的线程Thread方法之---suspend()和resume() 分类: ...
查看>>
经典排序算法回顾:选择排序,快速排序
查看>>
BZOJ2213 [Poi2011]Difference 【乱搞】
查看>>
c# 对加密的MP4文件进行解密
查看>>
AOP面向切面编程C#实例
查看>>
访问修饰符、封装、继承
查看>>
更换pip源到国内镜像,提升pip下载速度.
查看>>
Kendo MVVM 数据绑定(七) Invisible/Visible
查看>>
插入返回ibatis 的selectKey 实现插入数据后获得id
查看>>
解决win7下打开Excel2007,报“向程序发送命令时出现问题”的错误
查看>>
Win form碎知识点
查看>>
避免使用不必要的浮动
查看>>
第一节:ASP.NET开发环境配置
查看>>