截取长文本,显示省略号(text-overflow:ellipsis)

本文介绍如何使用CSS属性text-overflow: ellipsis实现文本的自动截断并以省略号显示,适用于不同类型的文本内容,包括数字、英文及中文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做项目有这么个需求(截取过长的文本内容,显示成省略号形式)于是想到了text-overflow:ellipsis,但记忆中好像这个有兼容性问题,就带着疑惑查阅了些资料,但发现资料都是一两年前的,都说有兼容性问题,貌似符合当年的记忆。心想不好,难道又要依靠js吗,这多多少少会损耗掉一些性能啊,带着疑虑和不甘自己来验证一番,毕竟过了几年了,这个css3的属性难道现代浏览器还不全支持吗?万恶的ie都一直支持的,这太不符合规律了。于是经过一系列验证,我得出text-overflow:ellipsis如今各大浏览器已完美支持如有错误还请指出

截取过长的文本内容,显示成省略号需要text-overflow:ellipsis加上一系列其他属性才能实现,下面分情况来说明:

1.div p li等块元素中如果全是数字则只需要text-overflow:ellipsis配上width和overflow:hidden就能实现...

example:

<div style=" width:50px; text-overflow:ellipsis; overflow:hidden;">1111111111111111111111111111111111</div>

2.div p li等块元素中如果全是英文则只需要text-overflow:ellipsis配上width和overflow:hidden就能实现...

example:

 

<div style=" width:50px; text-overflow:ellipsis; overflow:hidden;">babybabybabybabybabybabybabybabybabybabybabybaby</div>

 

3.div p li等块元素中如果全是中文则需要text-overflow:ellipsis配上width和overflow:hidden white-space:nowrap才能实现...

 

example:

 

<div style=" width:50px; text-overflow:ellipsis; overflow:hidden; white-space:nowrap;">我爱宝贝莹我爱宝贝莹我爱宝贝莹我爱宝贝莹我爱宝贝莹</div>

 

当然英文和数字混排和1、2种情况一样

如果是table,td里想实现这种效果也分几种情况,必要条件就是table得设table-layout:fixed

4.td直接包含中文,那table还必须有width,td需要text-overflow:ellipsis配上overflow:hidden white-space:nowrap

example:

<table style="table-layout:fixed" width="120"> <tr><td style=" text-overflow:ellipsis; overflow:hidden; white-space:nowrap;">我爱宝贝莹我爱宝贝莹我爱宝贝莹我爱宝贝莹我爱宝贝莹</td></tr> </table>

5.td包含数字或英文或数字英文混排,那table也还必须有width,td需要text-overflow:ellipsis和overflow:hidden

example:

 

<table style="table-layout:fixed" width="50"> <tr><td style=" text-overflow:ellipsis; overflow:hidden;">11111111111111111111111111111</td></tr> </table>

 

6.td里嵌套div p li等块状元素,则table不需要width和table-layout:fixed,但块状元素得有width,剩余的中文、数字、英文情况就和1、2、3相同了

example:

复制代码
<table> <tr><td><div style=" width:50px; text-overflow:ellipsis; overflow:hidden;">11111111111111111111111111111</div></td></tr> </table> <table> <tr><td><div style=" width:50px; text-overflow:ellipsis; overflow:hidden; white-space:nowrap;">我爱宝贝莹我爱宝贝莹我爱宝贝莹我爱宝贝莹我爱宝贝莹</div></td></tr> </table>
复制代码

7.中英文或者中文数字混排则和3、4情况相同

最后送上一段对以上依然不确定的同学一段jquery代码(同样可以实现相同功能)

复制代码
//页面加载之后,设置.样式.  $(function(){ //使用id选择器;例如:tab对象->tr->td对象. //$("#high_light").find("tr").find("td")性能优于$("#high_light tr td")  $("#high_light").find("tr").find("td").each(function(i){ //获取td当前对象的文本,如果长度大于25;  if($(this).text().length>25){ //给td设置title属性,并且设置td的完整值.给title属性.  $(this).attr("title",$(this).text()); //获取td的值,进行截取。赋值给text变量保存.  var text=$(this).text().substring(0,25)+"..."; //重新为td赋值;  $(this).text(text);  
         }  
      });  
}); 
复制代码
复制代码
<table id="high_light"> <tr> <td> 这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取. </td> <td> 这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取. </td> <td> 这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取.这是很长的一段文本内容,测试是否能正常截取. </td> </tr> </table>
复制代码

转载于:https://my.oschina.net/openoschina/blog/367444

`text-overflow` 是 CSS 属性,用于控制当文本溢出容器时如何处理。`text-overflow` 可以设为 `ellipsis`,表示用省略号来代替溢出的文本。 `str-slice` 是一个 JavaScript 函数,用于截取字符串的一部分。它的语法如下: ``` str.slice(startIndex[, endIndex]) ``` 其中 `startIndex` 表示开始截取的位置,`endIndex` 表示截取结束的位置(不包括该位置的字符)。如果省略 `endIndex`,则将截取到字符串末尾。 将它们结合起来可以实现当文本溢出时,用省略号来代替溢出的部分。具体实现方法如下: 1. 首先给容器设置一个固定宽度和 `overflow: hidden` 属性,表示当文本溢出时隐藏溢出部分。 2. 在容器内部嵌套一个块级元素,用来显示文本。给这个元素设置 `white-space: nowrap` 属性,表示文本不换行。 3. 使用 JavaScript 获取文本块元素的实际宽度和文本内容的实际宽度,如果文本内容宽度大于文本块元素宽度,则进行截取并在结尾省略号。 示例代码如下: HTML 代码: ``` <div class="container"> <div class="text">这是一段很长很长的文本,可能会溢出容器。</div> </div> ``` CSS 代码: ``` .container { width: 200px; overflow: hidden; } .text { white-space: nowrap; } ``` JavaScript 代码: ``` const container = document.querySelector('.container'); const text = document.querySelector('.text'); const textWidth = text.offsetWidth; const containerWidth = container.offsetWidth; if (textWidth > containerWidth) { const slicedText = text.textContent.slice(0, Math.floor(containerWidth / textWidth * text.textContent.length)) + '...'; text.textContent = slicedText; } ``` 这样就可以在文本溢出时使用省略号来代替溢出的部分了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值