纯 CSS 实现文本超过行数展开收起

这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互

<div class="text-wrap">
    <p class="hide-txt">
        <label class="hide-txt-expand">
            <input type="checkbox" hidden />
        </label>
        这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互这是一段测试文字,用来试验纯css检测文本是否溢出,并据此增加交互
    </p>
</div>
.text-wrap {
    display: flex;
    position: relative;
    width: 300px;
    padding: 8px;
    outline: 1px dashed #9747ff;
    border-radius: 4px;
    line-height: 1.5;
    text-align: justify;
    font-family: cursive;
    margin-top: 20px;
}
.hide-txt {
    animation: checkHide 1s;
    animation-timeline: scroll(self);
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    --trunc: false;
}
.hide-txt::before {
    content: '';
    float: right;
    height: calc(100% - 24px);
}
.hide-txt-expand {
    font-size: 80%;
    padding: 0.2em 0.5em;
    background-color: #9747ff;
    color: #fff;
    border-radius: 4px;
    cursor: pointer;
    float: right;
    clear: both;
}
.hide-txt-expand::after {
    content: '展开';
}

.text-wrap:has(:checked) .hide-txt {
    -webkit-line-clamp: 999;
}
.text-wrap:has(:checked) .hide-txt-expand {
    display: initial;
}
.text-wrap:has(:checked) .hide-txt-expand::after {
    content: '收起';
}

@keyframes checkHide {
    from,
    to {
        --trunc: true;
    }
}
@container style (--trunc:true) {
    .hide-txt-expand {
        display: initial;
    }
}

Copyright © 2020 Seven all right reserved,powered by Gitbook该文件修订时间: 2024-06-21 13:55:54

results matching ""

    No results matching ""