文本溢出体验进阶:CSS 技巧实现单行/多行隐藏展示以及实际场景应用,确保内容可读性和布局整洁性

本文主要是介绍文本溢出体验进阶:CSS 技巧实现单行/多行隐藏展示以及实际场景应用,确保内容可读性和布局整洁性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

CSS文本溢出隐藏是一种常见的场景,它广泛应用于各种网页设计中,旨在确保内容的可读性和布局的整洁性,特别是在空间有限或需要适应不同屏幕尺寸的情况下。

一、文本溢出隐藏并显示省略号

1、单行文本溢出隐藏并显示省略号

对于单行文本,通常只需设置以下三个CSS属性:

.single-line-text {overflow: hidden; /* 隐藏溢出内容 */text-overflow: ellipsis; /* 当文本溢出时显示省略号 */white-space: nowrap; /* 禁止文本换行 */
}

应用示例:

<div class="single-line-text">这是一段非常非常非常非常非常非常长的单行文本,超出部分会被隐藏并显示省略号...
</div>

在这个例子中,当文本长度超过其容器的宽度时,超出的部分将会被隐藏,同时在文本末尾显示省略号(…),表示文本已被截断。

2、多行文本溢出隐藏并显示省略号

多行文本的溢出隐藏并显示省略号稍微复杂一些,因为CSS标准本身并不直接支持多行文本的text-overflow: ellipsis。不过,可以通过结合使用line-clamp属性(现代浏览器支持)和伪元素来模拟这一效果:

.multi-line-text {display: -webkit-box; /* 兼容WebKit内核浏览器,如Chrome和Safari */-webkit-line-clamp: 3; /* 显示最大3行 */-webkit-box-orient: vertical; /* 设置垂直方向上的排列方式 */overflow: hidden; /* 隐藏溢出内容 */text-overflow: ellipsis; /* 当文本溢出时显示省略号 *//* 对于非WebKit内核浏览器,可以使用以下CSS Grid方案作为备用(但不会显示省略号) */display: grid;grid-template-columns: repeat(auto-fit, minmax(0, 1fr));max-height: .jpgem; /* 调整为所需的行高乘以最大行数 */margin-bottom: .2em; /* 为省略号留出空间(可选) */padding-right: .½em; /* 为省略号留出空间(可选) */
}/* 为非WebKit内核浏览器添加省略号(仅在支持伪元素的浏览器中有效) */
.multi-line-text::after {content: '...'; /* 添加省略号 */position: absolute;right: 0; /* 将省略号定位到右侧 */bottom: 0; /* 将省略号定位到底部 */background-color: white; /* 与背景色相同,覆盖可能的多余文本 */width: .5em; /* 省略号宽度 */height: .5em; /* 省略号高度 */line-height: .5em; /* 保持省略号居中 */text-align: center;
}

应用示例:

<div class="multi-line-text">这是一段非常非常非常非常非常非常长的多行文本,超出指定行数的部分会被隐藏并(在支持的浏览器中)显示省略号...
</div>

在这个例子中,文本将被限制为最多显示3行。当文本内容超过这个限制时,超出的部分将会被隐藏。在支持-webkit-line-clamp属性的浏览器(如基于WebKit内核的Chrome和Safari)中,会在文本末尾自动显示省略号。对于不支持该属性的浏览器,可以尝试使用CSS Grid结合伪元素模拟类似效果,尽管这可能无法精确地在最后一行显示省略号,而是简单地在容器底部附加一个省略号。

请注意,多行文本省略号的实现可能需要针对不同浏览器进行兼容性调整,因为并非所有浏览器都原生支持多行text-overflow: ellipsis。上述示例提供了一种常见的跨浏览器解决方案,但实际应用时可能需要根据目标浏览器的支持情况和项目需求进行调整。

二、文本溢出隐藏能滑动展示隐藏部分

很多时候,默认只展示一部分(单行或者多行),可以通过横向或者纵向滑动展示剩余部分而不是直接省略,体验会更好。

.scroll-text {width: 288rpx;max-height: 148rpx;overflow: scroll; /* 溢出内容可以滚动 */line-height: 44rpx;
}

应用示例:

<div class="scroll-text">这是一段非常非常非常非常非常非常长的文本,超出部分会被隐藏,纵向滑动可以查看隐藏内容
</div>

在这个例子中,当文本长度超过其容器的最高max-height时,超出的部分将会被隐藏,可以通过滑动显示被隐藏部分内容。

三、文本溢出隐藏应用场景

1. 导航菜单项或标签页标题

在有限的空间内,导航菜单项或标签页标题可能包含较长的文本。为了保持导航栏的紧凑性和美观性,可以设置溢出隐藏:

.nav-item,
.tab-title {overflow: hidden;white-space: nowrap;text-overflow: ellipsis;max-width: 100%; /* 或指定一个固定宽度 */
}

2. 卡片或列表项描述

在卡片式布局或列表视图中,每个项目的描述文本可能因内容长度差异导致整体布局不整齐。通过溢出隐藏,可以确保描述始终保持在设定的区域内:

.card-description,
.list-item-content {overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2; /* 可根据需要调整行数 */-webkit-box-orient: vertical;line-height: 1.5; /* 保持适当的行间距 */
}/* 对于不支持 `-webkit-line-clamp` 的浏览器,可以使用以下备用方案 */
.card-description.fallback,
.list-item-content.fallback {max-height: 3.6em; /* 调整为期望的最大行数乘以行高 */margin-bottom: .2em; /* 为省略号留出空间 */padding-right: .5em; /* 为省略号留出空间 */position: relative;
}.card-description.fallback::after,
.list-item-content.fallback::after {content: '...';position: absolute;right: 0;bottom: 0;background-color: white; /* 与背景色相同,覆盖可能的多余文本 */width: .5em;height: .5em;line-height: .5em;text-align: center;
}

3. 表格单元格

表格中,特别是数据密集型表格,单元格内的文本可能过长,影响表格的可读性和美观性。对特定列应用溢出隐藏可以避免这种情况:

table.data-table td.long-text {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}/* 如果需要支持多行省略,可以使用以下CSS Grid方案 */
table.data-table td.long-text.multiline {display: grid;grid-template-columns: repeat(auto-fit, minmax(0, 1fr));max-height: 3em; /* 调整为所需的行高乘以最大行数 */
}

4. 用户评论或消息摘要

在论坛、社交媒体或聊天应用中,用户评论或消息摘要常常需要在有限的空间内展示。使用溢出隐藏可以保持界面一致性:

.comment-summary,
.message-preview {overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: ¾; /* 可根据需要调整行数 */-webkit-box-orient: vertical;
}/* 对于不支持 `-webkit-line-clamp` 的浏览器,可以使用以下备用方案 */
.comment-summary.fallback,
.message-preview.fallback {max-height: 2.¼em; /* 调整为期望的最大行数乘以行高 */margin-bottom: .2em; /* 为省略号留出空间 */padding-right: .5em; /* 为省略号留出空间 */position: relative;
}.comment-summary.fallback::after,
.message-preview.fallback::after {content: '...';position: absolute;right: 0;bottom: 0;background-color: white; /* 与背景色相同,覆盖可能的多余文本 */width: .5em;height: .5em;line-height: .5em;text-align: center;
}

5. 响应式布局中的小屏幕设备

在移动端或小屏幕设备上,为了适应窄小的视口,往往需要对内容进行缩放或截断。文本溢出隐藏在此类场景中尤为重要:

@media (max-width: 767px) {.responsive-text {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;/* 或者针对多行文本使用 -webkit-line-clamp 或 CSS Grid 方案 */}
}

以上列举的场景只是文本溢出隐藏应用的一部分实例,实际上,只要涉及到需要控制文本展示范围以保持布局稳定或视觉美感的地方,都可能用到这一技术。开发者应根据具体的设计需求和浏览器兼容性选择合适的实现方法。

在这里插入图片描述

这篇关于文本溢出体验进阶:CSS 技巧实现单行/多行隐藏展示以及实际场景应用,确保内容可读性和布局整洁性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921014

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配