HTML中文本过长、超出限制字数时自动隐藏末尾部分或中间等任意部分

在 HTML 中,可以使用 CSS 样式来控制文本的长度和显示方式。  

单行文本溢出显示省略号

        使用 text-overflow 属性:这个属性可以控制文本超出容器宽度时的显示方式,例如隐藏末尾部分。可以将其设置为 “ellipsis” 表示在末尾添加省略号。示例代码如下:

<style> 
    .text { 
        width: 200px; 
        white-space: nowrap; 
        overflow: hidden; 
        text-overflow: ellipsis; 
    } 
</style> 
<div class="text">
    这是一段很长的文本内容,超过了容器的宽度,会自动隐藏末尾部分并显示省略号。
</div>

多行文本溢出显示省略号

        多行文本溢出显示省略号可以使用CSS3中的-webkit-line-clamp属性来实现。

        示例代码如下:

.ellipsis {
  display: -webkit-box;
  -webkit-line-clamp: 2; /* 显示2行文本 */
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis; /* 文本溢出时显示省略号 */
}

        以上CSS代码中,我们使用了-webkit-box-webkit-box-orient将其设置为一个垂直盒装容器,同时使用-webkit-line-clamp属性控制文本在容器内最大展示的行数,例如上述代码中设置为2行,则文本内容超过两行时就会自动省略并显示省略号。 

        在HTML中应用该样式:

<p class="ellipsis">这是一段超长的文本,如果超出两行就显示省略号。</p>

需要注意的是,目前该实现方法只在WebKit内核的浏览器(如Safari、Chrome等)中适用,并且需要添加-webkit-前缀以兼容不同浏览器。

那么如果要隐藏中间部分呢?这个时候光写css是达不到我们想要的效果的我们需要使用JavaScript一起来设置!

基本思路:

  1. 获取文本所在的DOM元素和其文本内容。

  2. 判断文本是否超出容器宽度,如果超出,则需要对文本进行截断。

  3. 根据需要截断的位置,将文本前半部分和后半部分分别包裹在两个span元素中,并在它们之间插入一个省略号。

  4. 将新的HTML内容写回到DOM元素中。

代码示例(假设文本所在的DOM元素有一个类名叫做 "text-container"):

var textContainer = document.querySelector('.text-container');
var originalText = textContainer.textContent;
var containerWidth = textContainer.offsetWidth;

if (textContainer.scrollWidth > containerWidth) {
  var halfLength = Math.floor(originalText.length / 2);
  var newText = '<span>' + originalText.substr(0, halfLength) + '</span>...<span>' + originalText.substr(halfLength) + '</span>';
  textContainer.innerHTML = newText;
}

以上就是常用的几种控制文本长度和显示方式的方法,具体使用可以根据我们实际开发需要选择。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小可乐吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值