<div class="wrapper">
<input id="exp1" class="exp" type="checkbox">
<div class="text">
<label class="btn" for="exp1"></label>
浮动元素是如何定位的
正如我们前面提到的那样,当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器 浮动元素是如何定位的
正如我们前面提到的那样,当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器
</div>
</div>
.wrapper {
display: flex;
margin: 50px auto;
width: 100%;
overflow: hidden;
border-radius: 8px;
padding: 15px ;
box-shadow: 20px 20px 60px #bebebe,
-20px -20px 60px #ffffff;
.text {
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
text-align: justify;
/* display: flex; */
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
position: relative;
}
.text::before {
content: '';
height: calc(100% - 18px);
float: right;
}
.text::after {
content: '';
width: 999vw;
height: 999vw;
position: absolute;
box-shadow: inset calc(100px - 999vw) calc(30px - 999vw) 0 0 #fff;
margin-left: -100px;
}
.btn{
float: right;
clear: both;
margin-left: 10px;
font-size: 12px;
padding: 0 8px;
background: #3F51B5;
line-height: 18px;
border-radius: 4px;
color: #fff;
cursor: pointer;
/* margin-top: -30px; */
}
.btn::before{
content:'展开'
}
.exp{
// display: none;
}
.exp:checked+.text{
-webkit-line-clamp: 999;
}
.exp:checked+.text::after{
visibility: hidden;
}
.exp:checked+.text .btn::before{
content:'收起'
}
}
效果
可以看下下面的链接,可谓是业界难题啊
CSS 实现多行文本“展开收起” - SegmentFault 思否