文字超出显示省略号解决方案

介绍了如何在单行和多行文字超出时使用CSS实现显示省略号的效果,主要适用于WebKit浏览器和移动端,同时也提供了跨浏览器的兼容解决方案。

文字单行超出显示省略号

div {
	width: 200px;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

文字多行超出显示省略号

div {
	width: 200px;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}

该方法适用于WebKit浏览器及移动端。

跨浏览器兼容方案:

p {
    position:relative;
    line-height:1.4em;
    /* 3 times the line-height to show 3 lines */
    height:4.2em;
    overflow:hidden;
}
p::after {
    content:"...";
    font-weight:bold;
    position:absolute;
    bottom:0;
    right:0;
    padding:0 20px 1px 45px;
}
### 实现文字超出部分隐藏并显示省略号,鼠标悬停时显示完整文字的效果 要实现这一效果,可以结合 CSS 的 `text-overflow: ellipsis` 属性和伪类 `:hover` 来完成。以下是具体的实现方法: #### 1. 基础样式设置 通过以下 CSS 样式,可以让文字在单行或多行超出容器宽度时显示省略号[^1]: ```css .text-ellipsis { white-space: nowrap; /* 强制文本在一行内显示 */ overflow: hidden; /* 隐藏超出容器的部分 */ text-overflow: ellipsis; /* 超出部分显示省略号 */ } ``` #### 2. 鼠标悬停时显示完整文字 为了在鼠标悬停时显示完整文字,可以使用伪类 `:hover` 和 `title` 属性来实现[^2]: ```css .text-ellipsis:hover { overflow: visible; /* 悬停时显示完整内容 */ white-space: normal; /* 恢复正常的换行行为 */ text-overflow: clip; /* 移除省略号 */ } .text-ellipsis { display: inline-block; /* 确保元素可以设置宽度 */ max-width: 200px; /* 设置最大宽度以触发省略号效果 */ vertical-align: top; /* 保持垂直对齐 */ } /* 使用 title 属性显示完整文本 */ .text-ellipsis { title: attr(data-full-text); /* 动态获取完整文本 */ } ``` #### 3. HTML 示例代码 以下是一个完整的 HTML 示例,展示如何结合上述 CSS 实现所需效果: ```html <div class="text-ellipsis" data-full-text="这是一个非常长的文本,用于演示当文字超出容器宽度时如何显示省略号,并在鼠标悬停时显示完整文字。"> 这是一个非常长的文本,用于演示当文字超出容器宽度时如何显示省略号,并在鼠标悬停时显示完整文字。 </div> ``` #### 4. 多行省略号支持(可选) 如果需要支持多行省略号,可以使用 `-webkit-line-clamp` 属性: ```css .text-multi-ellipsis { display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */ -webkit-box-orient: vertical; /* 设置或检索伸缩盒对象的子元素的排列方式 */ -webkit-line-clamp: 2; /* 控制文本显示的行数 */ overflow: hidden; /* 隐藏超出的内容 */ text-overflow: ellipsis; /* 超出部分显示省略号 */ } ``` #### 注意事项 - `text-overflow: ellipsis` 只能在单行或结合 `-webkit-line-clamp` 使用时生效。 - 如果需要兼容性更好的解决方案,可以考虑使用 JavaScript 动态截取文本并添加 `title` 属性。 ```javascript document.querySelectorAll('.text-ellipsis').forEach(el => { if (el.scrollWidth > el.offsetWidth) { el.setAttribute('title', el.textContent); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小码哥・Martin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值