文本溢出体验进阶: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 方案 */
  }
}

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/560342.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么找程序员对象?和程序员谈恋爱是什么体验?

和程序员谈恋爱是一种非常累的体验&#xff0c;因为他们大部分时间都会加班&#xff0c;守在电脑面前不能够陪自己。但是这样的男孩子&#xff0c;忠诚、认真、不会花花草草、收入贼高&#xff0c;恋爱幸福指数接近满分哦&#xff01; 程序员都是宅男&#xff0c;都是电脑狂魔&…

中科院JCR期刊分区介绍

文章目录 1. 背景2. 简介3. 学科分类方法4. 分区表计算方法5. 分区指标说明5.1 IF5.2 3年平均IF5.3 CI 6. 中科院分区和JCR期刊分区有哪些异同&#xff1f;6.1 数据基础相同6.2 学科划分小类部分相同 1. 背景 SCI作为论文与引文分析的重要手段, 被国内各级科研管理部门所重视,…

stm32开发之threadx之modulex模块文件的生成脚本项目

前言 为了保证在window上运行&#xff0c;且体积小的问题&#xff0c;所以采用c语言编写生成脚本,将相关路径由json文件进行配置,使用了一个cjson库进行解析项目构建使用的是cmake 项目代码 CMakeLists文件 cmake_minimum_required(VERSION 3.27) project(txm_bat_script C…

stm32开发之threadx+modulex+filex+shell组件(实现命令行动态加载程序)

前言 前几篇博客基本上已经将filex、levelx、threadx、modulex、shell 组件大概都记录了一遍.本篇博客做个综合实际案例记录. 实现效果 代码程序 Modulex组件 源文件 /** Copyright (c) 2024-2024&#xff0c;shchl** SPDX-License-Identifier: Apache-2.0** Change Logs:…

easyx库的学习(文字绘制)

前言 昨天刚刚写完了基本图形的制作&#xff0c;今天直接可以来看看&#xff0c;在easyx中使用文字 直接看代码吧 文字绘制 void drawTest() {printf("hello,EasyX");//指的是在控制台打印//设置字体大小&#xff0c;样式settextstyle(30, 0, "微软雅黑&quo…

4.4 @ControllerAdvice全局数据处理

4.4 ControllerAdvice全局数据处理 1. 全局异常处理 &#xff20;ExceptionHandler2. 添加全局数据 ModelAttribute3. 请求参数预处理 InitBinder 顾名思义&#xff0c;&#xff20;ControllerAdvice 就是&#xff20;Controller 增强版。&#xff20;ControllerAdvice 主要用来…

【LAMMPS学习】八、基础知识(3.8)计算扩散系数

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

esp32-通过wifi使用timelib库同步时间(三)

库的安装 本文基于platformIO&#xff0c;安装较为简单如下图 实例代码 完整代码如下&#xff0c;如果时间获取超时请使用time1.aliyun.com获取时间。 /** Time_NTP.pde* Example showing time sync to NTP time source** This sketch uses the Ethernet library*/#include …

通过实例学C#之序列化与反序列化XmlSerializer类

简介 可以将类序列化成xml文件&#xff0c;或者将xml文件反序列化成类对象&#xff0c;一般用于保存或加载项目参数。 构造函数 XmlSerializer() 不使用函数创建一个xmlSerializer对象。 XmlSerializer(Type type) 使用type对象创建一个xmlSerializer对象&#xff0c;注意&…

NotePad++联动ABAQUS

Abaqus 中脚本运行 1. 命令区kernel Command Line Interface &#xff08;KCLI&#xff09; execfile(C:\\temp\second develop\chapter2\pyTest1.py)2. CAE-Run Script File->Run Script 3. Abaqus command Abaqus cae noGUIscript.py(前后处理都可)Abaqus Python scr…

牛x之路 - Day1

Day1 微积分之屠龙宝刀&#xff08;武林秘籍&#xff09; 之前的一些东西都在pdf上记得笔记&#xff0c; 没有在这个上面展示一遍&#xff0c;只好学到相关内容的时候再提叙啦&#xff1b;所以其实再写这个小记的时候&#xff0c;我已经看了一半的书&#xff0c;但是不要紧&am…

【结构型模式】组合模式

一、组合模式概述 组合模式的定义与意图&#xff1a;将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。&#xff08;对象结构型&#xff09; 组合模式分析&#xff1a; 1.当容器对象的某一个方法被调用时&#xff0c;将遍…

OpenHarmony网络协议通信—kcp

kcp 是一种 ARQ 协议,可解决在网络拥堵情况下 tcp 协议的网络速度慢的问题 下载安装 直接在 OpenHarmony-SIG 仓中搜索 kcp 并下载。 使用说明 准备一套完整的 OpenHarmony 3.1 Beta 代码 库代码存放路径&#xff1a;./third_party/kcp 修改添加依赖的编译脚本 在/develo…

书生·浦语实战营第二期(六)——Agent

一、概述&#xff1a; 1.1、Lagent: Lagent 是一个轻量级开源智能体框架&#xff0c;旨在让用户可以高效地构建基于大语言模型的智能体。同时它也提供了一些典型工具以增强大语言模型的能力。 Lagent 目前已经支持了包括 AutoGPT、ReAct 等在内的多个经典智能体范式&#xf…

jeecgflow之camunda工作流-串行流程

引言 UserTask用户任务,是需要人处理后才能流转的任务。 本文将构建一个简单的串行流程带大家快速入门camunda工作流。 BPMN在线建模 如需亲自体验文章案例&#xff0c;请访问如下网址。 JeecgFlow演示站点 需求 我们以三国为背景&#xff0c; 假设系统中拥有将军&#xff0c…

ardunio中自定义的库文件

1、Arduino的扩展库都是放在 libraries目录下的。完整路径为&#xff1a;C:\Users\41861\AppData\Local\Arduino15\libraries 所以我们需要在这个目录下创建一个文件夹&#xff0c;比如上面的例子是esp32上led灯控制程序&#xff0c;于是我创建了 m_led文件夹&#xff08;前面加…

根据 Excel 列生成 SQL

公司有个历史数据刷数据的需求, 开发功能有点浪费, 手工刷数据有点慢, 所以研究了下 excel 直接生成 SQL, 挺好用, 记录一下; 例如这是我们的数据, 要求把创建时间和完成时间刷进数据库中, 工单编号唯一 Excel 公式如下: "UPDATE service_order SET create…

浅析Redis④:字典dict实现

什么是dict&#xff1f; 在 Redis 中&#xff0c;dict 是指哈希表&#xff08;hash table&#xff09;的一种实现&#xff0c;用于存储键值对数据。dict 是 Redis 中非常常用的数据结构之一&#xff0c;用于实现 Redis 的键空间。 在 Redis 源码中&#xff0c;dict 是一个通用…

linux中如何挂载yum云仓库进行软件的安装

1.首先在根目录下建立文件&#xff0c;用来挂载镜像文件 [rootclient ~]# mkdir /rhel9 2.挂载镜像文件&#xff1a; [rootclient ~]# mount /dev/cdrom /rhel9 3.切换到 /etc/yum.repos.d 下的目录并查看 &#xff0c;创建 rhel9.repo文件&#xff0c;并编辑云仓库域名&am…

【LLM 论文】Self-Consistency — 一种在 LLM 中提升 CoT 表现的解码策略

论文&#xff1a;Self-Consistency Improves Chain of Thought Reasoning in Language Models ⭐⭐⭐⭐⭐ ICLR 2023, Google Research 文章目录 论文速读 论文速读 本工作提出了一种解码策略&#xff1a;self-consistency&#xff0c;并可以用于 CoT prompting 中。 该策略提…