这里有一篇最近的css技巧文章讨论了这个问题。
上面文章中的一些解决方案(这里没有提到)是
1) -webkit-line-clamp和2)放置一个绝对定位的元素右下角淡出
这两种方法都假设有以下标记:
<div class="module"> /* Add line-clamp/fade class here*/
<p>Text here</p>
</div>
用css
.module {
width: 250px;
overflow: hidden;
}
1) -webkit-line-clamp
线夹(..最多3行)
.line-clamp {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
max-height: 3.6em; /* I needed this to get it to work */
}
2)淡出
假设您将行高设置为1.2em。如果我们想曝光
三行文本,我们可以设置容器的高度
3.6em (1.2em × 3).隐藏溢出将隐藏其余部分。
淡出小提琴
p
{
margin:0;padding:0;
}
.module {
width: 250px;
overflow: hidden;
border: 1px solid green;
margin: 10px;
}
.fade {
position: relative;
height: 3.6em; /* exactly three lines */
}
.fade:after {
content: "";
text-align: right;
position: absolute;
bottom: 0;
right: 0;
width: 70%;
height: 1.2em;
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 50%);
}
解决方案#3 -使用@supports的组合
我们可以使用@supports在webkit浏览器上应用webkit的线夹,并在其他浏览器上应用淡出。
@支持线钳与淡出回退小提琴
<div class="module line-clamp">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
</div>
CSS
.module {
width: 250px;
overflow: hidden;
border: 1px solid green;
margin: 10px;
}
.line-clamp {
position: relative;
height: 3.6em; /* exactly three lines */
}
.line-clamp:after {
content: "";
text-align: right;
position: absolute;
bottom: 0;
right: 0;
width: 70%;
height: 1.2em;
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 50%);
}
@supports (-webkit-line-clamp: 3) {
.line-clamp {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
max-height:3.6em; /* I needed this to get it to work */
height: auto;
}
.line-clamp:after {
display: none;
}
}