HTML单行、多行超出不换行显示省略号、溢出隐藏、使用Clamp.js兼容IE

本文详细介绍了如何使用CSS实现文本单行或多行超出时显示省略号的效果,包括解决浏览器兼容性问题的方法,如使用Clamp.js插件,并提供了代码示例及与不同组件的对比。

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

1、单行超出不换行,显示省略号

width: 770px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

2、多行超出不换行,显示省略号

width: 100px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; /*限制文本行数*/
-webkit-box-orient: vertical;

3、兼容万恶的IE

使用这几条css属性不兼容火狐和IE 所以采用插件的形式

可以使用 Clamp.js

https://github.com/josephschmitt/Clamp.js

代码示例

var titles = document.getElementsByClassName("p-title");
for (var i = 0; i < titles.length; i++){
    // 显示3行
    $clamp(titles[i], {clamp: 3});
}

实践发现:

  1. Clamp.js的表现不是太好
  2. 在 IE11下-webkit-line-clamp: 2 也是可以生效的,不过不显示...,重要的是需要设置【元素宽度】

其他组件
HeyUI:https://www.heyui.top/component/other/textellipsis

vue-text-ellipsis:https://github.com/Luobata/vue-text-ellipsis

4、参考tailwindcss.css 命名,整合为常用css

// 单行文本溢出隐藏
.truncate {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

// 多行文本溢出隐藏
// 最多显示2行
.truncate-2 {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2; /*限制文本行数*/
  -webkit-box-orient: vertical;
}

flex布局失效可以参考:https://blog.csdn.net/mouday/article/details/123942878

参考

<think>我们正在讨论CSS如何实现文本溢出显示省略号。根据引用资料,实现方式主要分为单行文本和多行文本两种情况。首先,对于单行文本溢出显示省略号,需要满足以下条件:1.设置宽度(width或flex-basis等)2.禁止换(white-space:nowrap;)3.溢出隐藏(overflow:hidden;)4.显示省略号(text-overflow:ellipsis;)示例代码(单行):```css.text-container{width:200px;/*或者使用max-width,具体根据需求*/white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}```其次,对于多行文本溢出显示省略号,情况稍微复杂。传统CSS属性直接支持单行多行需要用到一些扩展属性。常见的方法有:方法一:使用-webkit-line-clamp(适用于Webkit内核浏览器,如Chrome、Safari等)示例代码(多行):```css.text-container{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;/*限制显示数*/overflow:hidden;text-overflow:ellipsis;}```注意:该方法在非Webkit内核浏览器中可能无效。方法二:结合伪元素和定位(兼容性较好,但可能不够精确)这种方法通常是在文本容器的末尾添加一个省略号,通过控制容器高度和高,然后在右下角添加省略号。但这种方法实现起来较为复杂,且要求背景固定(否则省略号可能覆盖文字)。根据引用[3]和[4]中的信息,多行文本溢出省略号还可以使用以下方式(但注意兼容性):引用[3]提到多行文本溢出显示省略号,并给出了一个示例,但实际引用内容中只给出了单行的代码。引用[4]同样只提到了单行。因此,我们主要推荐使用-webkit-line-clamp方法来实现多行省略,但要注意其兼容性(不支持Firefox和IE)。另外,引用[5]中提到了一个使用cursor:pointer;的例子,表示文本溢出显示省略号,并且可以点击(可能是为了展开全文),但核心样式还是单行省略。总结:1.单行文本溢出省略:使用white-space:nowrap;overflow:hidden;text-overflow:ellipsis;并设置宽度。2.多行文本溢出省略:使用-webkit-line-clamp属性(注意浏览器兼容性),或者使用其他hack方法(如伪元素)。下面给出一个多行文本省略的例子(使用-webkit-line-clamp):```html<style>.multi-line-ellipsis{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;/*显示3*/overflow:hidden;}</style><divclass="multi-line-ellipsis">这里是一段很长的文本,当文本内容超过3时,超出部分将显示省略号。注意,这个方法在非Webkit浏览器中可能不生效。</div>```如果需要在非Webkit浏览器中实现多行省略,可以考虑使用JavaScript库(如clamp.js)或者使用CSS伪元素模拟(但这种方法需要固定高度和高,且背景要纯色)。注意:以上方法都需要设置宽度(或高度)来限制显示区域。相关问题:1.如何实现响应式宽度下的文本溢出省略?2.多行文本省略在非Webkit浏览器中如何兼容?3.如何实现鼠标悬停时显示完整文本(例如使用title属性或自定义tooltip)?</think>### CSS实现文本溢出显示省略号CSS中实现文本溢出显示省略号效果,主要分为**单行文本**和**多行文本**两种情况,以下是具体实现方法: #### 一、单行文本溢出省略号 ```css .ellipsis-single { width: 200px; /* 必须设置宽度 */ overflow: hidden; /* 隐藏溢出内容 */ white-space: nowrap; /* 禁止文本换 */ text-overflow: ellipsis; /* 显示省略号 */ } ``` **实现原理**: 1. `width`:限制容器宽度(或使用`max-width`) 2. `overflow: hidden`:隐藏超出部分 3. `white-space: nowrap`:强制文本不换 4. `text-overflow: ellipsis`:超出部分用省略号表示 #### 二、多行文本溢出省略号兼容Webkit内核浏览器) ```css .ellipsis-multi { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; /* 显示数 */ overflow: hidden; text-overflow: ellipsis; } ``` **实现原理**: 1. `-webkit-line-clamp`:限制显示数 2. `display: -webkit-box`:使用弹性盒模型 3. `-webkit-box-orient: vertical`:垂直方向排列 #### 三、通用解决方案(兼容所有浏览器) ```css .ellipsis-fallback { position: relative; line-height: 1.5em; /* 高 */ max-height: 4.5em; /* 最大高度 = 高×数 */ overflow: hidden; } .ellipsis-fallback::after { content: "..."; position: absolute; right: 0; bottom: 0; background: white; /* 背景色需匹配容器 */ padding-left: 5px; } ``` **注意事项**: 1. 必须设置**固定宽度**或**最大高度** 2. 父容器需有明确尺寸 3. 多行方案需考虑浏览器兼容性 4. 伪元素方案需要背景色匹配容器 **示例应用**: ```html <div class="card"> <p class="ellipsis-multi"> 这是一段需要溢出显示省略号的长文本内容,当超过指定数时... </p> </div> ``` --- ### 相关问题 1. 如何实现响应式宽度下的文本溢出省略效果? 2. CSS的`text-overflow: ellipsis`在表格单元格中不生效怎么办? 3. 多行文本省略在移动端有哪些兼容性问题和解决方案? 4. 如何通过JavaScript动态检测文本是否溢出5. 省略号显示后,如何实现鼠标悬停展示完整内容? [^1]: 引用[1]:如果实现单行文本的溢出显示省略号,用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览。 [^3]: 引用[3]:CSS实现单行多行文本溢出显示省略号。此处要注意盒子必须设置宽度,超出部分会显示省略号。 [^5]: 引用[5]:文本溢出显示省略号需要设置flex-basis, white-space: nowrap, overflow: hidden和text-overflow: ellipsis。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值