使用css和js对字符进行限制,超出部分用省略号替代

文章介绍了如何使用CSS和JavaScript来限制字符显示,当内容超过特定长度时,用省略号表示。首先展示了CSS的white-space、text-overflow和overflow属性用于单行文本限制。然后通过JS编写函数动态限制字符数,当内容超过30个字符时,截取前30个字符并添加省略号。最后,文章提到了将该功能封装成可复用的方法,便于在不同场景下应用。

1.首先使用css对字符进行限制

   /* css部分*/
    <style>
        .word {
            width: 300px;
            height: 100px;
            background-color: skyblue;
            white-space: nowrap;/*不允许换行*/
            text-overflow: ellipsis;/*省略号*/
            overflow: hidden;/*超出部分隐藏*/
        }
    </style>
    <div class="box">
        <p class="word">在一片森林里,住着一只老虎和一只小猫,老虎住在山顶,小猫住在山脚。山上的小溪往山下流,正好从小猫家门前流过。它们都过着宁静而悠闲的生活。</p>
    </div>
   

下面是效果展示,使用css进行限制的话只能单行,它是确定标签宽度,超出部分就使用省略号替代,用于单行。

 2.使用js对字符的数量进行限制,超出规定数量的就使用省略号替代

/*html标签*/
 <div class="box">
        <p class="word">在一片森林里,住着一只老虎和一只小猫,老虎住在山顶,小猫住在山脚。山上的小溪往山下流,正好从小猫家门前流过。它们都过着宁静而悠闲的生活。</p>
 </div>

/*js部分*/
<script>
        
        let word =document.querySelector('.word')
        let newWord = word.innerHTML
        limit()
        function limit() {
            if(newWord.length > 30) {
              //确定现有p标签内容的长度,超过30就截取前30个字符并加上省略号
              word.innerHTML =   newWord.substring(0,30) + '...'
            }
        }
    </script>

效果图如下

2.1   封装方法,方便复用

//limit.js
export function  wordLimit(newWord,word,num) {
    if(newWord.length > num) {
        word.innerHTML=  newWord.substring(0,num) + '......'
    }
}

//调用
<script type="module">
        import {wordLimit} from './limit.js'
        let word =document.querySelector('.word')
        let newWord = word.innerHTML
        wordLimit(newWord,word,30)
    </script>

文章就到这里啦,本人功力尚浅,若有不妥之处请谅解指正,谢谢!

### CSS文字溢出显示省略号的中间截断实现 在CSS中,通常的文字溢出显示省略号是通过 `text-overflow: ellipsis` 实现的,但这种默认方式仅支持尾部截断。如果需要实现**中间截断**的效果,则需要借助伪元素或其他技术手段来完成[^1]。 以下是实现文字中间截断并用省略号替代的解决方案: #### 单行文本中间截断 通过使用伪元素 `::before` `::after`,可以将文字分割为三部分:前缀、省略号后缀。这种方法适用于单行文本。 ```css .middle-ellipsis { position: relative; width: 200px; /* 设置固定宽度 */ white-space: nowrap; overflow: hidden; } .middle-ellipsis::before, .middle-ellipsis::after { content: attr(data-text); /* 使用data属性动态设置内容 */ display: inline-block; max-width: 50%; /* 前后部分各占一半 */ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .middle-ellipsis::before { content: attr(data-prefix); /* 前缀内容 */ } .middle-ellipsis::after { content: attr(data-suffix); /* 后缀内容 */ } ``` HTML示例: ```html <div class="middle-ellipsis" data-text="这是一个非常长的文本" data-prefix="这是" data-suffix="文本">这是一个非常长的文本</div> ``` #### 多行文本中间截断 对于多行文本的中间截断,可以通过 JavaScript 动态计算文字的长度,并插入省略号。纯CSS无法直接实现多行中间截断效果,因为 `-webkit-line-clamp` 其他多行截断属性仅支持尾部截断[^4]。 以下是一个简单的JavaScript实现: ```javascript function middleEllipsis(element) { const text = element.textContent; const maxLength = 30; // 最大字符数 if (text.length > maxLength) { const prefix = text.substring(0, Math.floor(maxLength / 2)); const suffix = text.substring(text.length - Math.ceil(maxLength / 2), text.length); element.textContent = `${prefix}...${suffix}`; } } document.querySelectorAll('.multi-middle-ellipsis').forEach(el => middleEllipsis(el)); ``` HTML示例: ```html <div class="multi-middle-ellipsis"> 这是一个非常长的文本,用于演示多行中间截断的效果。 </div> ``` CSS样式: ```css .multi-middle-ellipsis { width: 200px; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } ``` ### 注意事项 1. 中间截断的实现复杂度较高,建议根据实际需求选择是否使用。 2. 如果需要兼容性更好的方案,推荐优先考虑尾部截断[^3]。 3. 动态内容的中间截断可能需要结合 JavaScript 实现更灵活的效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值