前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何用CSS优雅地实现段落多行文本溢出隐藏?

如何用CSS优雅地实现段落多行文本溢出隐藏?

原创
作者头像
喵喵侠
修改于 2024-08-08 10:02:07
修改于 2024-08-08 10:02:07
1.1K0
举报

目录

前言

你好,我是喵喵侠。在前端开发页面的过程中,有时候需要对段落文字进行溢出隐藏处理,特别是在内容较长的情况下。这篇文章将详细讲解如何使用CSS实现多行文字的溢出隐藏,再想到解决方法之前,你会觉得很麻烦,但有了这篇文章,你再也不用烦恼如何实现段落多行文本溢出隐藏的问题了!

实现方式:使用-webkit-line-clamp

实现多行文本溢出隐藏的关键,是使用CSS的-webkit-line-clamp属性,这个属性结合其他几个属性可以实现我们想要的效果。

根据MDN文档的描述,需要注意的是,它只有在display属性设置成 -webkit-box 或者 -webkit-inline-box 并且box-orient属性设置成 vertical时才有效果。

另外,该属性最初在 WebKit 中实现的,但存在一些问题。由于需要支持旧版本的浏览器,该属性已在 CSS Overflow Module Level 4 中被标准化。CSS Overflow Module Level 4 规范还定义了一个 line-clamp 属性,用来代替此属性并避免一些问题。

line-clamp这个CSS属性你也可以在caniuse上可以看到浏览器对此支持的情况。从下图可以看到,目前市面上主流的浏览器都是支持的,可以放心大胆使用。

"line-clamp" | Can I use... Support tables for HTML5, CSS3, etc

以下是详细步骤和代码示例:

步骤一:设置父容器

首先,设置一个父容器,这个容器包含我们要处理的段落文字。

代码语言:html
AI代码解释
复制
<div class="text-container">
  <p class="element">这是一个很长的段落文字示例,这段文字会被限制在两行显示,超出的部分将被隐藏并显示省略号。</p>
</div>

步骤二:应用CSS样式

接下来,使用CSS设置-webkit-line-clamp属性以及其他相关属性。

代码语言:css
AI代码解释
复制
.element {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    text-overflow: ellipsis;
    word-break: break-all;
}

这段CSS代码的具体解释如下:

  • display: -webkit-box;:设置盒模型为-webkit-box,使其能够支持多行文本溢出隐藏。
  • -webkit-box-orient: vertical;:将盒子设置为垂直布局。
  • -webkit-line-clamp: 2;:设置最大显示的行数,这里设置为2行。
  • overflow: hidden;:隐藏超出容器的内容。
  • text-overflow: ellipsis;:在溢出隐藏时显示省略号。
  • word-break: break-all;:表示对于对于 non-CJK (除了中文/日文/韩文外)文本,可在任意字符间断行。

注意:word-break: break-all;这个必须要设置,不然纯数字是没办法换行的,一定不要写漏掉了。高度或者最大高度可以不用设置,这个我试过了。如果你希望文字排版好看一点,可以设置line-height:1.5;

完整代码

代码语言:html
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>多行文本溢出隐藏示例</title>
  <style>
    .text-container {
      width: 300px;
      border: 1px solid #000;
    }

    .element {
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 2;
      overflow: hidden;
      text-overflow: ellipsis;
      word-break: break-all;
    }
  </style>
</head>

<body>
  <div class="text-container">
    <p class="element"> 这是一个很长的段落文字示例,这段文字会被限制在两行显示,超出的部分将被隐藏并显示省略号。这里继续添加更多的文字内容,以确保段落足够长来触发溢出效果。再多加一些文字以确保效果明显。 </p>
  </div>
</body>

</html>

效果如下:

总结

之前我看到过很多别的方法,比方说用伪元素做定位之类的,可以实现,但缺点也很明显,代码量也比较多。而通过使用-webkit-line-clamp属性,并且结合其他CSS属性,可以轻松实现段落多行文本的溢出隐藏。这种方法不仅简洁高效,还能保持页面布局的整洁,这可以说是最优雅的解决方案了!如果你需要对多行文本进行溢出隐藏处理,推荐使用这种方法。

希望这篇文章对你有所帮助!如果有任何疑问或需要进一步的解释,欢迎在评论区留言讨论。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
JavaScript设计模式之代理模式
什么Nginx代理、JSONP、科学上网…,你平时的工作中可能都用了代理模式,只是你不知道。
FinGet
2019/06/28
2990
JavaScript设计模式之代理模式
和 lvgo 一起学设计模式(六)结构型之代理模式
设计模式的学习问题⁉❔ 我一直都在想如何学会一个新东西,和掌握一个旧东西?,有很多前辈给过一些建议和意见?,(当然不是直接给我,都是看大佬的文章或者书籍当中。)先去用,再去学。嗯,我想是的,这样肯定是
星尘的一个朋友
2020/11/25
3020
和 lvgo 一起学设计模式(六)结构型之代理模式
JavaScript设计模式 单例模式
面向对象的单例模式,是通过new关键字来实例化我们想要的对象,并将其赋值给instance。
菜的黑人牙膏
2019/01/21
5170
给女朋友讲解什么是代理模式
前言 只有光头才能变强 回顾前面: ThreadLocal就是这么简单 多线程三分钟就可以入个门了! 多线程基础必要知识点!看了学习多线程事半功倍 Java锁机制了解一下 AQS简简单单过一遍 Lock锁子类了解一下 线程池你真不来了解一下吗? 多线程之死锁就是这么简单 多线程就先告一段落了,昨天写完多线程,本来打算是看IO的知识点的,后来看了一下IO的几种模型,又翻了一下《Java编程思想》。不知道从哪下手~~ 在看到FilterInputStream和FilterOutputStream时看到了之前常听
Java3y
2018/06/11
9891
JavaScript设计模式--代理模式
代理模式:为一个对象提供一个代用品或占位符,以便控制对它的访问。 代理分为:保护代理和虚拟代理 保护代理:用于控制不同权限的对象对目标对象的访问,在JavaScript中很难判断谁访问了某个对象,所以保护代理很难实现。
奋飛
2019/08/15
4560
JavaScript设计模式之代理模式
当你想买商业保险的时候,却不得不亲自去了解不同公司的方案和限制。在自己百忙之中分神和不同的销售博弈。有了职业的保险经纪人,你只要向他/她讲述你的需求,经纪人就用自己的关系量身定做了一套方案给你。买哪家,怎么买,等等。保险经纪代理的模式,很好地体现了程序设计关注点分离的思想。
一粒小麦
2019/10/30
3490
JavaScript设计模式之代理模式
JS设计模式之代理模式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/71374535
j_bleach
2019/07/02
8420
JS设计模式之代理模式
「设计模式 JavaScript 描述」代理模式
代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景。比如,明星都有经纪人作为代理。如果想请明星来办一场商业演出,只能联系他的经纪人。经纪人会把商业演出的细节和报酬都谈好之后,再把合同交给明星签。
用户8921923
2022/10/24
3800
javascript设计模式三:代理模式
单一职责其实就是指在一个类中(js中通常指对象和函数等),应仅有一个引起它变化的原因。这样会帮助程序设计具有良好的健壮和高内聚特性,从而当变化发生时,程序设计会尽量少的受到意外破坏。
前端_AWhile
2019/08/29
3200
JavaScript 设计模式学习总结与感悟(开发&面试必备)
最近阅读了《JavaScript设计模式与开发实践》,收获颇丰,于是想写一点总结及感想
coder_koala
2020/07/22
5710
JavaScript 设计模式学习总结与感悟(开发&面试必备)
代理模式详解
代理模式可以看作委托别人去办事。如果你想办一件事(比如访问一个资源、操作一个文件),但因为种种原因不能直接去做,就可以通过一个中间人来帮忙。这种中间人就是代理,既可以帮你完成任务,又可以加点“附加服务”,比如检查你的权限、记录操作日志等。
码事漫谈
2024/12/20
1640
代理模式详解
JavaScript设计模式之代理模式
https://github.com/ahwgs/design-pattern-learning/tree/master/7.JavaScript%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F
w候人兮猗
2020/07/01
2890
前端的设计模式系列-代理模式
代码也写了几年了,设计模式处于看了忘,忘了看的状态,最近对设计模式有了点感觉,索性就再学习总结下吧。
windliang
2022/08/20
2930
前端的设计模式系列-代理模式
懒得改变原始对象?JavaScript代理模式教你怎样一步步偷懒!
沉浸式趣谈
2024/03/13
940
懒得改变原始对象?JavaScript代理模式教你怎样一步步偷懒!
JavaScript设计模式 代理模式
代理模式的关建是,当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际访问的是替身对象,替身对象对请求做出一些处理后,再把请求转交给本体对象。
菜的黑人牙膏
2019/01/21
3610
彻底明白Android设计模式—(动态)代理模式
这种模式有什么应用场景呢?先说下生活中对应的场景,明星接通告一般商家要找明星做活动,是要先找到他的经纪人,然后经纪人去负责一些琐碎的或者运营方面的事情,而明星只需要做具体的活动相关事情就可以了。这里经纪人的作用就是作为了一个代理。
码上积木
2020/09/27
5140
代理模式(javascript版)5
核心在于:另外,想一下你通过链家的中介买房子,算不算代理模式?—— 不算,此时是三方关系,买家、中介、卖家,合同上都要签字的。而上面的明星经纪人却是两方关系,你和经纪人联系就好了,你不用跟明星直接联系。 你可可以说是比如两个数交换位置是不是得添加三个数啊,是吧
贵哥的编程之路
2020/10/28
2460
代理模式(javascript版)5
JavaScript 设计模式 —— 单例模式
从事开发岗位也有一年多的时间了,见识过陈年老项目,也从零到一搭建过一个项目。随着项目和业务的不断扩张,写下的代码如果没有进行设计,就渐渐变成了 emm ... x 山,怎么写都不对劲,过段时间就想着重构。
前端LeBron
2022/11/21
4230
JavaScript 设计模式 —— 单例模式
小谈设计模式(8)—代理模式
主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。
学编程的小程
2023/10/11
1870
小谈设计模式(8)—代理模式
代理模式的种类、原理及各种实例详解
代理模式是开发中常用的一种设计模式,每一种设计模式的出现都会极大的解决某方面的问题,代理模式也是一样,本文将会用通俗的语言来解释什么是代理模式?代理模式的种类、代码示例、每种代理模式的优缺点和代理模式适用的场景。
java之旅
2020/03/23
7760
推荐阅读
相关推荐
JavaScript设计模式之代理模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档