文本溢出截断省略

1. 单行文本超出截断显示省略号

    css {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    white-space: nowrap;  文本在一行显示,不换行
    overflow: hidden;     让超出的文本隐藏起来
    text-overflow: ellipsis; 显示省略号代表被修剪的文本
    优点:
    没有兼容问题
    响应式截断
    文本溢出范围才显示省略号, 否则不显示省略号
    省略号显示位置刚好
    缺点:
    只支持单行文本截断        
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>文本超出时显示 ...</title>
    <style>
        .content {
            background: lightcyan;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="content">之前看过一个观点叫“凡事提前10分钟,效果惊人”: 如果提前10分钟起床,就可以从容地照照镜子整整妆容,出门时就不会那么狼狈了; 如果提前10分钟出门,就不用担心上班迟到,不用担心扣工资,不用担心错过重要的会议内容了; 如果提前10分钟准备会议资料,开会时就不会手忙脚乱,被点到发言时就不会吞吞吐吐,更不会被领导训, 道理人人都懂,但真能做到的却并不多。许多人都是间歇性踌躇满志,持续性浑浑噩噩,嘴里喊着要早点行动,身体却很诚实地继续拖拉。 明明下决心要早睡早起,一不小心就刷手机刷到夜里两点,第二天早上起来依然手忙脚乱;早上决定要在下班前写完方案,结果写了两句又忍不住刷起了朋友圈,到下班时方案才开了个头,一时的拖延看似无害,长期的拖延却会悄悄把你拖入深渊。</div>
    </div>
</body>
</html>

2. 多行文本超出显示省略号

    css {
        -webkit-line-clamp: 4;
        display: -webkit-box;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
    -webkit-line-clamp: 4; 限制在元素内应该显示的行数
    display: -webkit-box; 结合1使用,将对象作为弹性伸缩盒子模型
    -webkit-box-orient: vertical; 结合1使用, 设置或检索伸缩盒对象的子元素的排列方式
    overflow: hidden; 让超出的文本隐藏起来
    优点: 
    响应式截断
    文本溢出范围才显示省略号, 否则不显示省略号
    省略号显示位置刚好
    多适用于移动端页面,因为移动设备浏览器更多是基于 WebKit 内核
    缺点:
    兼容性一般: -webkit-line-clamp 属性只有 Webkit 内核的浏览器才支持
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>文本超出时显示 ...</title>
    <style>
        .content {
            background: lightcyan;
            -webkit-line-clamp: 2;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="content">之前看过一个观点叫“凡事提前10分钟,效果惊人”: 如果提前10分钟起床,就可以从容地照照镜子整整妆容,出门时就不会那么狼狈了; 如果提前10分钟出门,就不用担心上班迟到,不用担心扣工资,不用担心错过重要的会议内容了; 如果提前10分钟准备会议资料,开会时就不会手忙脚乱,被点到发言时就不会吞吞吐吐,更不会被领导训, 道理人人都懂,但真能做到的却并不多。许多人都是间歇性踌躇满志,持续性浑浑噩噩,嘴里喊着要早点行动,身体却很诚实地继续拖拉。 明明下决心要早睡早起,一不小心就刷手机刷到夜里两点,第二天早上起来依然手忙脚乱;早上决定要在下班前写完方案,结果写了两句又忍不住刷起了朋友圈,到下班时方案才开了个头,一时的拖延看似无害,长期的拖延却会悄悄把你拖入深渊。</div>
    </div>
</body>
</html>

3. JavaScript 实现文本超出显示省略号(中文没问题,英文单词可能会显示不全)

    var elem = document.getElementsByClassName('类名'); 获取元素
    elem.style.overflow = 'hidden'; 超出元素高度的不显示
    var elemText = '很长很长的文本'; 显示的长文本
    var elemHeight = elem.clientHeight; 获取元素的可视区域的高度
    遍历文本,让元素显示文本, 当 元素的内容高度 大于 元素的可视区域的高度时 截取后三个字显示为 ... 并跳出循环
    for (let i = 0; i < elemText.length; i++) {
        elem.innerHTML = elemText.substr(0, i);
        if (elem.scrollHeight > elemHeight) {
            elem.innerHTML = elemText.substr(0, i-3) + '...';
            break;
        }
    }
    缺点:
    不是响应式截断, 需每次手动刷新
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>文本超出时显示 ...</title>
    <style>
        .content {
            background: lightcyan;
            height: 60px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="content"></div>
    </div>
    <script>
        var elem = document.getElementsByClassName('content')[0];
        var elemText = '之前看过一个观点叫“凡事提前10分钟,效果惊人”: 如果提前10分钟起床,就可以从容地照照镜子整整妆容,出门时就不会那么狼狈了; 如果提前10分钟出门,就不用担心上班迟到,不用担心扣工资,不用担心错过重要的会议内容了; 如果提前10分钟准备会议资料,开会时就不会手忙脚乱,被点到发言时就不会吞吞吐吐,更不会被领导训, 道理人人都懂,但真能做到的却并不多。许多人都是间歇性踌躇满志,持续性浑浑噩噩,嘴里喊着要早点行动,身体却很诚实地继续拖拉。 明明下决心要早睡早起,一不小心就刷手机刷到夜里两点,第二天早上起来依然手忙脚乱;早上决定要在下班前写完方案,结果写了两句又忍不住刷起了朋友圈,到下班时方案才开了个头,一时的拖延看似无害,长期的拖延却会悄悄把你拖入深渊。';
        var elemHeight = elem.clientHeight;
        elem.style.overflow = 'hidden';
        for (let i = 0; i < elemText.length; i++) {
            elem.innerHTML = elemText.substr(0, i);
            if (elem.scrollHeight > elemHeight) {
                elem.innerHTML = elemText.substr(0, i-3) + '...';
                break;
            }
        }
    </script>
</body>
</html>

参考文章:
可能是最全的 “文本溢出截断省略” 方案合集
【css/js】限制一行和多行文字数量,超出部分用省略号显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值