一行文字保持末尾固定文字显示,中间多余变为省略号

 <html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=0.5, user-scalable=no,viewport-fit=cover" />
    <title>一行文字保持末尾固定文字显示,中间多余变为省略号</title>
</head>
<style>
    .demo {

        font-size: 20px;
        margin-left: 10%;
    }
    #txtcontent {
        display: inline-block;
        word-wrap: break-word;
        word-break: break-all;
    }
</style>

<body>
    <div class="demo">
        <div id="sigle" style="position: absolute;top:-100000px">测试文字高度</div>
        <div id="txtcontent">“整个小长假期间交通秩序总体良好。9月17日下午起受车流量短时集中、下午4时至晚上12时长时间降雨等因素叠加影响,车辆剐蹭、轻微追尾等小事故增多,致当天下午起出现缓行现象。”深中通道路产管理部部长黄晓红介绍,9月15日至17日,深中通道路段共发生交通事故31宗(其中追尾事故29宗),无人员伤亡;共发生62宗车辆故障事件,其中大客车故障1宗,安全转运乘客49人。--张三</div>
    </div>
</body>
<script>
    let contentArea = document.getElementById('txtcontent');
    let contentTxt = contentArea.innerHTML; //获取内容
    let contentHeight = contentArea.clientHeight; //获取内容当前的高度

    let sigleArea = document.getElementById('sigle'); //获取当前字体下单行文字高度
    let sigleHeight = sigleArea.clientHeight;
    let needHeight = sigleHeight * 1 //设置两行文字高度

    setWordHeight()

    function setWordHeight() {
        if (contentHeight > needHeight) { //当文本高度大于设定的两行高度就执行
            let j = 0
            let beword = contentTxt.split("--")[0]
            let afword = contentTxt.split("--")[1]
            for (i = 0; needHeight < contentHeight; i++) {
                contentTxt = contentArea.innerHTML;
                beword = beword.substring(0, beword.length - 1);//每次删掉最后一个
                contentArea.innerHTML = beword + " -- " + afword;//剩余的字符插入
                contentHeight = contentArea.clientHeight;//重新计算高度
                j++
                if (j > 1000) {
                    return //防止出现意外卡死
                }
            }
            //得到正好符合高度的文字,替换beword最后一个文字
            let newText = beword.substring(0, beword.length - 1) + '...' + "<span style='color:blue'>" + " -- " + afword + "</span>";
            contentArea.innerHTML = newText;
        }
    }
</script>

</html>

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值