当前位置: 首页 > news >正文

单多行文本溢出

1.前言

在日常开发展示页面,如果一段文本的数量过长,受制于元素宽度的因素,有可能不能完全展示,为了提高用户的使用体验,这个时候就需要我们把溢出的文本显示成省略号

对于文本的溢出,我们可以分成两种形式:

  • 单行文本溢出
  • 多行文本溢出

2.实现方式

2.1 单行文本溢出省略

理解也很简单,即文本在一行内显示,超出部分以省略号的形式展现

实现方式也很简单,涉及的css属性有:

  • text-overflow:规定当文本溢出时,显示省略号来代表被修剪的文本
  • white-space:设置文字在一行显示,不能换行
  • overflow:文字长度超出限定宽度,则隐藏超出的内容
  • overflow设为hidden,普通情况用在块级元素的外层隐藏内部溢出元素,或者配合下面两个属性实现文本溢出省略white-space:nowrap,作用是设置文本不换行,是overflow:hidden和text-overflow:ellipsis生效的基础text-overflow属性值有如下:
    • clip:当对象内文本溢出部分裁剪掉
    • ellipsis:当对象内文本溢出时显示省略标记(...)

text-overflow只有在设置了overflow:hidden和white-space:nowrap才能够生效

举个例子

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>p {overflow: hidden;line-height: 40px;width: 400px;height: 40px;border: 1px solid red;text-overflow: ellipsis;white-space: nowrap;}</style></head><body><p>这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本</p></body>
</html>
​

效果如下:

可以看到,设置单行文本溢出较为简单,并且省略号显示的位置较好

2.2 多行文本溢出省略

多行文本溢出的时候,我们可以分为两种情况:

  • 基于高度截断
  • 基于行数截断

2.2.1 基于高度截断

2.2.2 伪元素 + 定位

核心的css代码结构如下:

  • position:relative:为伪元素绝对定位
  • overflow:hidden:文本溢出限定的宽度就隐藏内容
  • position:absolute:给省略号绝对定位
  • line-height:20px:结合元素高度,高度固定的情况下,设定行高,控制显示行数
  • height:40px:设定当前元素高度
  • ::after {} :设置省略号样式

代码如下所示

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.demo {position: relative;line-height: 20px;height: 40px;overflow: hidden;}.demo::after {content: "...";position: absolute;bottom: 0;right: 0;padding: 0 20px 0 10px;}</style></head><body><div class="demo">这是一段很长的文本这是一段很长的文本这是一段很长的文本这是一段很长的文本这是一段很长的文本这是一段很长的文本这是一段很长的文本这是一段很长的文本</div></body>
</html>
​

实现原理很好理解,就是通过伪元素绝对定位到行尾并遮住文字,再通过iverflow:hidden隐藏多余文字

这种实现具有以下优点:

  • 兼容性好,对各大主流浏览器有好的支持
  • 响应式截断,根据不同宽度做出调整

一般文本存在英文的时候,可以设置word-break:break-all使一个单词能够在换行时进行拆分

2.2.3 基于行数截断

纯css实现也非常简单,核心的css代码如下:

  • -webkit-line-clamp:2:用来限制一个块元素显示的文本的行数,为了实现该效果,他需要组合其他的webkit属性
  • display:-webkit-box:和1结合使用,将对象作为弹性伸缩盒子模型显示
  • -webkit-box-orient:vertical:和1结合使用,设置或检索伸缩盒对象的子元素的排列方式
  • overflow:hidden:文本溢出限定的宽度就隐藏内容
  • text-overflow:ellipsis:多行文本的情况下,用省略号:"...."隐藏溢出范围的文本

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>p{width: 400px;border-radius: 1px solid red;-webkit-line-clamp: 2;display: -webkit-box;-webkit-box-orient: vertical;overflow: hidden;text-overflow: ellipsis;}</style>
</head>
<body><p>这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本这是一些文本</p>
</body>
</html>

可以看到,上述使用了webkit的CSS属性扩展,所以兼容浏览器范围是PC端的webkit内核的浏览器,由于移动端大多数是使用webkit,所以移动端常用该形式

需要注意的是,如果文本为一段很长的英文或者数字,则需要添加word-wrap:break-word属性

http://www.dtcms.com/a/363785.html

相关文章:

  • 大数据毕业设计选题推荐-基于大数据的大学生就业因素数据分析系统-Spark-Hadoop-Bigdata
  • 从0到1掌握进度管理:核心概念解析+目标设定的新手友好指南!
  • Elasticsearch常用DSL快速查询指南
  • Linux一共有多少个版本?
  • 基于SpringBoot2+Vue2开发的储物柜管理系统
  • 详解STM32的完整启动流程
  • Java流程控制04——if选择结构(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
  • CentOS 7 服务器CPU突然飙升至100%?精准定位问题。
  • HBase Region
  • token存储方案
  • 告别传统照明!安科瑞 DALI 总线智能照明系统,解锁公建项目照明新体验
  • 机器人控制器开发(人形机器人产品设计)
  • 【C++模板】从起源到入门,小白必学泛型编程指南
  • 民间药方偏方网站整站源码 带数据PHP版
  • 【爬油管搜索视频软件】youtube爬虫工具,根据关键词采集搜到的视频数据
  • 分布式爬虫的全局请求间隔协调与IP轮换策略
  • 重磅!PS2021 和企业微信 5.0 可直接运行,统信兼容引擎 V3.3.2 全面升级!
  • 【最新Pr 2025安装包(Adobe Premiere Pro 2025 中文解锁版)安装包永久免费版下载安装教程】
  • 用了企业微信 AI 半年,这 5 个功能让我彻底告别重复劳动
  • 深度学习篇---DenseNet
  • 机器人控制器开发(整体架构2 Lerobot介绍)
  • [嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_测试Qt编译的opencv4.x的库
  • 移动硬盘删除东西后,没有释放空间
  • 滚珠导轨在工业制造领域如何实现高效运行?
  • java-设计模式-4-创建型模式-工厂
  • 金博智慧:数量感知与注意力对儿童数学成绩的影响
  • OpenTiny NEXT 训练营实操体验 | 四步将你的 Web 应用升级为智能应用
  • Unity通过Object学习原型模式
  • 第三家公司虽然用了powerbi,但更适合用excel
  • QuickBI的已选字段 vs PowerBI的字段参数