【CSS Tricks】试试新思路去处理文本超出情况

news2024/10/6 12:41:57

目录

  • 引言
  • 一、常规套路
    • 1. 单行文本省略
    • 2. 多行文本省略
  • 二、新思路美化一下
    • 1. 单行/多行文本隐藏
    • 2. 看下效果
  • 三、总结

引言

本篇为css的一个小技巧

文本溢出问题是一个较为常见的场景。UI设计稿为了整体的美观度会将文本内容限制到一定范围内,然而UI设计阶段并不能预先适配任意长度的文字信息,所以需要从开发侧操作一下,将文本限制在UI设计的范围内。

文本溢出的开发场景:

  • 卡片标题过长
  • 用户通知信息列表摘要信息过长。
  • 上传附件列表,文件名过长。
  • 下拉列表选项文本过长。
  • 其他

一、常规套路

准备一份文本内容:

    <div class="ellipsis_text">
      在网页或应用设计中,当多行文本内容超过设定的显示范围时,使用省略号来表示文本被截断是一种常见的做法。这不仅有助于保持界面的整洁美观,还能有效利用有限的空间展示尽可能多的信息。实现这一效果通常需要CSS样式支持,如设置overflow:
      hidden;、text-overflow: ellipsis;和display:
      -webkit-box;等属性,并结合-webkit-line-clamp属性控制显示的行数。这种方法适用于大多数现代浏览器,能够确保即使在不同设备上也能一致地呈现文本截断效果。
    </div>

1. 单行文本省略

.ellipsis_text {
	width: 200px; /* 需限制宽度 */
	overflow: hidden; /* 隐藏溢出的内容 */
	white-space: nowrap; /* 确保文本在一行内显示 */
	text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
}

2. 多行文本省略

.ellipsis_text {
	width: 200px;
	overflow: hidden; /* 隐藏溢出的内容 */
	display: -webkit-box;  /* 使用Webkit内核的弹性盒布局模型来显示对象。这种布局模型允许更灵活地控制子元素的排列和对齐方式。 */
	-webkit-line-clamp: 3;  /* 可以把块容器中的内容限制为指定的行数。它只有在 display 属性设置成 -webkit-box 或者 -webkit-inline-box 并且 box-orient 属性设置成 vertical时才有效果。 */
	-webkit-box-orient: vertical; /* 设置弹性盒对象的子元素排列方向为垂直。这意味着子元素会从上到下依次排列,这对于多行文本尤其重要。 */
}

-webkit-line-clamp 值设置为1,同样可以获得单行文本省略的效果。

各属性介绍查看上述代码注释


二、新思路美化一下

1. 单行/多行文本隐藏

核心点在于,利用overflow隐藏多余内容;利用伪类制作遮罩隐藏后半段,营造还有更多内容的引导效果。

解释下代码设计逻辑

  1. 设置四个css变量:
    • --line_clamp 表示需要显示多少行。
    • --line_height 表示行高,这个很重要,这里实现的效果依赖于确定的行高,用于计算总体容器高度以及遮罩高度。
    • --background_color--font_color 这两个变量依据自己需求设置即可,颜色需要反色使对比明显。
  2. 先确定文本行高,再使用 --line_clamp 乘以 --line_height 确定总体容器的高度。
  3. 利用伪类after设置背景色渐变,通过定位移动到最后一行进行内容遮罩。
    .ellipsis {
      --line_clamp: 3;
      --line_height: 2rem;
      --background_color: #000;
      --font_color: #fff;
      width: 400px;
      line-height: var(--line_height);
      height: calc(var(--line_height) * var(--line_clamp));
      overflow: hidden; /* 隐藏溢出的内容 */
      position: relative;
      background-color: var(--background_color);
      color: var(--font_color);
      font-weight: bold;
      font-size: 24px;
    }
    .ellipsis::after {
      content: "...";
      width: 400px;
      height: var(--line_height);
      position: absolute;
      right: 0;
      bottom: 0;
      background: linear-gradient(
        to right,
        transparent 50%,
        var(--background_color) 90%
      );
    }

2. 看下效果

在这里插入图片描述


三、总结

本篇内容不算复杂,主要涉及到了css变量和css伪类两个要点。将常规样式固化,核心样式提取出简单易理解的变量方便定制化修改。灵活运用伪类,给本体dom添加额外装饰,达到最终样式的表达效果。

虽然我们已经完成了长文本的隐藏功能,但是为了网页内容的完整性,我们仍需考虑添加title属性提示全文,或是点击弹窗、伸展dom等方式展示全文。在开发过程中不断完善整体的页面逻辑。

再接再厉~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧学生宿舍管理平台|学生宿舍管理平台系统|基于Springboot+VUE的智慧学生宿舍管理平台系统设计与实现(源码+数据库+文档)

智慧学生宿舍管理平台 目录 基于SpringbootVUE的智慧学生宿舍管理平台系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕…

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…

STM32F407 HAL库定时器触发ADC采集与DMA数据传输(定时器TIM+ADC+DMA)

在STM32F407系列微控制器的开发中&#xff0c;结合定时器、ADC&#xff08;模数转换器&#xff09;与DMA&#xff08;直接存储器访问&#xff09;控制器&#xff0c;能够显著提升数据采集与传输的效率。本文将指导你如何使用STM32 HAL库&#xff0c;通过定时器触发ADC1的单通道…

认知战认知作战:欧盟向中国纯电动车加关税为背景的认知作战方式与策略

认知战认知作战&#xff1a;欧盟向中国纯电动车加关税为背景的认知作战方式与策略 关键词&#xff1a;欧盟, 中国, 纯电动车, 关税, 认知战, 舆论战, 政治动员, 外交反击, 市场份额, 保护主义, 技术升级, 中立第三方, 友军, 国际贸易, 合作与竞争,认知作战,新质生产力,人类命运…

信号用wire类型还是reg类型定义

wire类型就是一根线&#xff0c;线有两端&#xff0c;一端发生改变&#xff0c;经过线传递的信号当然也会发生改变&#xff0c;reg类型则不同&#xff0c;可以把reg类型理解为存储数据的寄存器&#xff0c;当满足一定条件时&#xff0c;数值才被激活发生改变。 那么&#xff0…

英国本科毕业论文写作如何确立论点

英国本科毕业论文关系到留学生是否能顺利毕业。因此&#xff0c;写好英国本科毕业论文也便成了留学生在毕业季的头等大事。那么应当怎么做才能更好地完成毕业论文呢&#xff1f;在本文中&#xff0c;英国翰思教育将从论点这个内容展开说说&#xff0c;如果高质量地完成毕业论文…

2024 uniapp入门教程 01:含有vue3基础 我的第一个uniapp页面

uni-app官网uni-app,uniCloud,serverless,快速体验,看视频&#xff0c;10分钟了解uni-app,为什么要选择uni-app&#xff1f;,功能框架图,一套代码&#xff0c;运行到多个平台https://uniapp.dcloud.net.cn/ 准备工作&#xff1a;HBuilder X 软件 HBuilder X 官网下载&#xf…

AI产品经理的崛起

“It will be unthinkable not to have artificial intelligence integrated into a product. Because everyone will expect it.” _Sam Altman, CEO & Co-founder (OpenAI)_正如Sam Altman所说的&#xff0c;2024年人工智能技术继续快速发展。我们看到了各种AI模型&#…

[Python] 《人生重开模拟器》游戏实现

文章目录 优化点一&#xff1a;多元化的天赋系统示例天赋&#xff1a;天赋选择代码&#xff1a; 优化点二&#xff1a;更加多样化的随机事件年龄阶段划分&#xff1a;随机事件代码&#xff1a; 优化点三&#xff1a;设定人生目标人生目标示例&#xff1a;人生目标代码&#xff…

ubunut声卡配置 播放视频没有声音的解决方法 alsamixer和pavucontrol的使用方法

文章目录 &#x1f319;ubuntu22.04网页没有声音&#xff0c;声卡提示Dummy Output方法一&#xff1a;切换内核&#x1f319;方法二&#xff1a;使用知乎的方法 &#x1f319;ubuntu22.04 连接蓝牙耳机&#xff0c;1秒后断连解决方法ubuntu声音操作alsamixerpavucontrol通过are…

高校校园交友系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;公告信息管理&#xff0c;轮播图信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;用户&#…

15分钟学 Python 第40天:Python 爬虫入门(六)第一篇

Day40 &#xff1a;Python 爬取豆瓣网前一百的电影信息 1. 项目背景 在这个项目中&#xff0c;我们将学习如何利用 Python 爬虫技术从豆瓣网抓取前一百部电影的信息。通过这一练习&#xff0c;您将掌握网页抓取的基本流程&#xff0c;包括发送请求、解析HTML、存储数据等核心…

【青训入营】青海湖租车之旅

# 问题描述油价飞升的今天&#xff0c;我们尽量减少花费。我们出门旅游&#xff0c;有时候租车去旅游也是一种不错的方式。这次我们这次旅游是从「青海湖」到「景点 X」&#xff0c;景点 X 可以是「敦煌」、「月牙泉」等&#xff0c;线路的路径是唯一的&#xff0c;假设我们每走…

佳易王电玩店ps5计时计费系统软件倒计时语音提醒软件操作教程

一、前言 【试用版软件下载可以点击最下方官网卡片】 佳易王电玩店ps5计时计费系统软件倒计时语音提醒软件操作教程 1、时间显示&#xff1a;正常使用时间&#xff0c;直观显示在对应桌旁。 2、倒计时显示&#xff1a;右侧显示剩余多少分钟&#xff0c; 3、定时语音提醒&am…

zookeeper选举kafka集群的controller

zookeeper选举kafka集群的controller目录 文章目录 zookeeper选举kafka集群的controller目录前言一、实操体验controller的选举二、模拟controller选举四、删除controller节点 前言 kafka集群的controller是kafka集群中一个有特殊作用的broker&#xff0c;负责整个kafka集群的…

【网络原理】TCP保持“可靠传输”的秘密--确认应答与超时重传机制

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 在上一篇文章中&#xff0c;我们研究了UDP报文的结构&#xff0c;由于其报头中只有两个字节来记录报文长度&#xff0c;导致一次最多只能传输 64KB 的数据&#xff0c;这完全无法满…

Mamba 架构在医学图像分析中的全面综述:分类、分割、重建及其他应用

Mamba 是一种状态空间模型&#xff08;State Space Model, SSM&#xff09;的特例&#xff0c;作为医学图像分析中模板驱动深度学习方法的替代方案&#xff0c;正日益受到关注。尽管 transformer 是强大的架构&#xff0c;但它也存在一些缺陷&#xff0c;例如计算复杂度为平方级…

图元是什么,图元在组态设计中发挥什么作用

从事HMI设计的小伙伴&#xff0c;肯定听说过图元的这个概念&#xff0c;图元简单可以理解为构成图形的最近本元素&#xff0c;如线、面、几何体等等&#xff0c;在一些组态软件中&#xff0c;图元的的重要性甚至超过了界面&#xff0c;因为有了图元就意味着有了千变万化的界面&…

[ESP32]ESP-IDF使用组件添加U8g2图形库

U8g2 在ESP32使用u8g2的时候可以使用添加component的方式进行, 由于官方的component库没有, 这里我找到了一个可以使用的github库, 使用git的方式进行添加这一个库 具体的原理可以看[官方手册](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-guides/to…

《Windows PE》4.1.4 手工重构导入表

接下来我们做一个稍微复杂一些的实验&#xff0c;实验需要四个程序&#xff1a; HelloWorld.exe&#xff1a;弹出MessageBox窗口&#xff08;实验1已实现&#xff09;。 Regedit.exe&#xff1a;添加注册表启动项。 LockTray.exe&#xff1a;锁定任务栏窗口。 UnLockTray.exe&…