怎么在css中实现多行省略
本篇文章给大家分享的是有关怎么在css中实现多行省略,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
10年积累的成都做网站、成都网站建设、成都外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有吴川免费网站建设让你可以放心的选择与我们合作。
使用-webkit-line-clamp
对多行文本的容器应用如下样式
div { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; -webkit-line-clamp: 2; }
除了 -webkit-line-clamp
其他属性固定不变,主要是将对象作为弹性伸缩盒子模型显示,并设置伸缩盒对象的子元素的排列方式。
而 -webkit-line-clamp
是用来控制多少行进行省略
优点:
浏览器原生支持的省略行为,样式看起来很舒服
简单方便使用
缺点:
看属性的前缀就知道,这是 webkit
内核的浏览器支持的,兼容性不是广泛。
使用场景
如果你只针对webkit内核浏览器或者移动端(移动端浏览器多数是webkit内核),那么使用该方案是最好的了。
利用绝对定位
这个方案其实很好理解的,首先我们对于一个装内容的容器右边预留一个空间用来放省略号,用 padding-right: 1em;
来预留空间,为啥是1em呢,一个省略号差不多就是1em啦,用em单位是为了响应字体大小。
用绝对定位把省略号定位在这个预留的空间右下角。
html
内容
css
.wrap3 { position: relative; padding-right: 1em; /*max-height是line-height的几倍,想最多显示多少行就几倍*/ max-height: 3.6em; line-height: 1.2em; text-align: justify; overflow: hidden; } .wrap3:before { position: absolute; right: 0; bottom: 0; content: '...'; }
效果(多内容时):
这样的话,省略号永远都会存在的。所以要解决这个问题,我们用一个跟背景颜色一样的方块遮住省略号,那么关键点就是,怎么知道何时要遮住,何时不遮住呢?
思路: 用于挡住省略号的方块也是绝对定位,靠右定为, right: 0
,但是 bottom
值就不要设置了,如果不设置的话,该方块会跟着文本内容的实际高度移动,而不是 max-height
的高度。这样的话,当不需要省略时(即不超过 max-height
)时,就刚好是 bottom: 0
的情况,就会挡住省略号。当要进行省略时(即超过 max-height
)就会挡不住省略号了,它自己也会被 overflow: hidden
给隐藏掉了。
所以最终方案是:
html
内容
css
.wrap { position: relative; /*line-height和height要相互配合,显示多少行就省略,就是line-height多少倍数*/ line-height: 1.2em; max-height: 3.6em; /*此属性看需求来判断是否设置,因为设置了padding-right,多腾出了点位置,该值一般为padding-right的值的负值*/ /*margin-left: -1em;*/ /*此值写死成1em就好,因为省略号大概就是占用1em的空间*/ padding-right: 1em; text-align: justify; overflow: hidden; } .wrap:before { position: absolute; right: 0; bottom: 0; content: '...'; } .wrap:after { position: absolute; right: 0; /*宽高写死1em就好,因为省略号大概就是占用1em的空间,用来遮挡住省略号,也基本上跟wrap的padding-right一致*/ width: 1em; /*与wrap的行高实际值保持一致*/ height: 1.2em; content: ''; /*要跟所在背景颜色一致才能遮挡住省略号后觉得没异样*/ background-color: #fff; }
效果:
优点
兼容性好,各大浏览器支持
自适应高度,不用写死高度,设定超过多少行才需要进行省略显示
自适应宽度
自适应字体大小,字体大小不会影响到原本的需求,即要求多少行省略就多少行才省略
缺点
文字右边会故意留空一些位置给省略号放置
需要考虑所在的背景颜色,因为after伪类要用背景颜色来遮挡住省略号
利用float布局
这个方案对于基础知识不扎实的童鞋们,可能不太好理解,如果仅是想找个解决方案不想知道原理的话,可以直接去里看
在说该方案之前,要先理解这么一个现象:
有这么一段html
左浮动