您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > CSS

CSS中完美掌握多行文本修剪技巧

时间:2023-07-28 20:44:19  来源:微信公众号  作者:大迁世界
这篇文章深入讨论了在css中裁剪多行文本的方法,以提高网页的外观和用户体验。作者首先介绍了常见的CSS文本裁剪技术,例如使用text-overflow和overflow属性。然后,他引入了新的CSS属性line-clamp,它可以更轻松地裁剪多行文本并添加省略号。作者解释了如何使用line-clamp属性设置最大行数,并指出了一些需要注意的注意事项。

AICube 开放GPT-4给大家使用以及AI工具助手,可以简化大家生图的的prompt

这篇文章深入讨论了在CSS中裁剪多行文本的方法,以提高网页的外观和用户体验。作者首先介绍了常见的CSS文本裁剪技术,例如使用text-overflow和overflow属性。然后,他引入了新的CSS属性line-clamp,它可以更轻松地裁剪多行文本并添加省略号。作者解释了如何使用line-clamp属性设置最大行数,并指出了一些需要注意的注意事项。

接下来,作者提供了一些使用line-clamp属性时可能遇到的限制和兼容性问题,并分享了一种使用JAVAScript 库进行文本裁剪的替代方法。他详细介绍了如何使用该库来自动裁剪多行文本,并为读者提供了示例代码和演示。

下面是正文~~~

在Web 开发中,CSS中的文本裁剪一直是一个问题。直到几年前,裁剪文本只能通过服务器端语言或JavaScript来完成,因为CSS没有文本裁剪功能。

单行裁剪

在2007年,第一个支持使用CSS 裁剪 文本的浏览器是Inte.NET Explorer 7(当时IE是主流浏览器),它使用了 text-overflow: ellipsis; 属性。该属性使得文本的一行可以被修剪,这在修剪网页文本方面是一个小的改进。

h1{
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
}

使用 Flexbox 模块的第一个版本进行多行裁剪

2012年,随着Chrome中第一次实现CSS Flexbox,第一次支持多行文本修剪。它看起来很有前途,我们网页开发人员认为这是不再需要服务器端或JavaScript操作来修剪多行段落的开始。

.line-clamp {   
   display: -webkit-box;   
   -webkit-line-clamp: 3;   
   -webkit-box-orient: vertical;     
   overflow: hidden; 
}

但是这种喜悦很快就消失了。CSS Flexbox 模块更新了两次,之后就没有留下任何多行特性的痕迹,这个特性是在 CSS Flexbox 的第一次实现中引入的。

对于许多开发者 - 包括我在内 - 他们正在使用这个功能,这个功能只被一个旧的非官方CSS模块支持,这些更新感觉就像是多行修剪功能的死亡。

CSS flexbox版本的历史:

display: box; /* old syntax from 2009 */
display: flexbox; /* unofficial syntax from 2011 */
display: flex; /* official 2013 syntax*/

Line-Clamp 重获新生

在2015年7月,Edge浏览器决定支持 line-clamp 功能,使用 -webkit 前缀,这是旧的CSS Flexbox模块中的语法。非常不寻常的是,微软浏览器使用了 -webkit 前缀,这通常只用于Webkit浏览器, 如Chrome / Safari和Opera。

2019年7月,它再次发生了!这次是Firefox浏览器决定支持此功能。同样,以同样不寻常的方式。

IE,Firefox使用了旧的Flexbox模块和 -webkit 前缀。

这两个主要的浏览器,使用两个不同的浏览器引擎——Mozilla的Moz和Microsoft的Edge,决定使用一个Webkit浏览器的旧功能。

绝望的时刻需要不择手段,由于使用 –webkit 前缀是支持此功能的官方方式最接近的方式,因此他们做出了这个激动人心的决定。

非官方的行数限制现在成为官方的了

主流浏览器如Firefox和Edge开始支持非官方的 line-clamp 功能,这意味着这个功能已经成为常态。

使用 line-clamp 非常简单:

  • 在文本容器上定义旧的 CSS Flexbox 属性 display: -webkit-box。
  • 使用以下方法定义要显示的文本行数 -webkit-line-clamp: 3。
  • 将旧的 flex-direction 属性从旧的 flexbox 添加 -webkit-box-orient: vertical。
  • 使用 overflow: hidden; 属性定义元素。
.content p{   
   display: -webkit-box;   
   -webkit-line-clamp: 3;   
   -webkit-box-orient: vertical;     
   overflow: hidden; 
}

使用 Sass Mixin 结合旧方法和新方法

现在我们有两种通过CSS修剪文本的方法:省略号方法仅适用于单行文本,而line-clamp属性适用于多行文本修剪。

如果可能的话,我更喜欢使用省略号这种旧的方式,因为它更接近 CSS 中的官方方式。

鉴于此,我创建了一个 @mixin ,它通过接受一个整数的可选参数来同时针对单行修剪和多行修剪。

如果mixin传递了一个数字,它将使用多行clamp方法。如果它没有收到任何参数,它将使用带省略号的单行trim方法。这是一个重载函数:

@mixin trim($numLines: null){
   @if $numLines != null {
      display:-webkit-box;
      -webkit-line-clamp:$numLines;
      -webkit-box-orient:vertical; 
      overflow:hidden;
   }
   @else{
      text-overflow:ellipsis;
      white-space:nowrap;
      overflow:hidden;
      display:block;
   }
}

我们可以以两种不同的方式使用这个mixin:

.foo{ 
    @include trim; /*will use the ellipsis = else result*/
}
.bar{
    @include trim(3); /*will use the line-clamp = if result*/
}

事例地址:https://codepen.io/elad2412/pen/Poovzzb

.foo 和 .bar 类的示例结果:

行数限制的浏览器支持

浏览器支持非常广泛,几乎覆盖了全球95%的浏览器。如果在浏览器中 line-clamp 不起作用,它只是不会修剪文本。这种回退对于不支持的浏览器已经足够好了。

本文转载自微信公众号「大迁世界」,可以通过以下二维码关注。转载本文请联系大迁世界公众号。



Tags:CSS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
12 个超级实用的 CSS 技巧
user-selectuser-select 属性可以用来控制用户是否能够选择文本。<div> <p>You can&#39;t select this text.</p></div><p>You can select this text.</p>CSS:div { width...【详细内容】
2023-12-19  Search: CSS  点击:(127)  评论:(0)  加入收藏
Vue里使用Tailwind CSS,这不是耍流氓吗
前言随着前端的发展,对前端页面的要求越来越高,而css的功能也越来越强大,但对于写css样式来说却是非常头疼的的事。因为前端页面的动画要求以及页面布局的精细管控,需要写大量的...【详细内容】
2023-12-11  Search: CSS  点击:(162)  评论:(0)  加入收藏
原生CSS嵌套使用,你学明白了吗?
如果你是一个前端开发人员,那么你应该使用过CSS预处理器以及预处理器中的嵌套特性。它一直是一个受欢迎的功能,我一直都在使用CSS预处理器。今年所有的主流浏览器都支持原生CS...【详细内容】
2023-12-06  Search: CSS  点击:(179)  评论:(0)  加入收藏
CSS_Flex 那些鲜为人知的内幕
前言Flex想必大家都很熟悉,也是大家平时在进行页面布局的首选方案。(反正我是!)。不知道大家平时在遇到Flex布局属性问题时,是如何查阅并解决的。反正,我每次记不住哪些属性或...【详细内容】
2023-12-06  Search: CSS  点击:(138)  评论:(0)  加入收藏
CSS:这几个伪类,你用了吗
## :root 伪类:root 伪类是匹配文档的根元素,很多时候,根元素也就是 html 元素,用 root 伪类来匹配根元素,目的就是解决根元素不是 html 的场景,比如根元素是 svg 的时候。 root...【详细内容】
2023-11-30  Search: CSS  点击:(169)  评论:(0)  加入收藏
新 CSS Math方法:Rem() 和 Mod()
CSS 添加了许多新的数学函数来补充旧有的函数(如 calc() 和最近的 clamp() )。这些函数最终都表示一个数值,但其工作原理的细微差别并不总是一开始就很清楚。本文介绍每个函数...【详细内容】
2023-11-23  Search: CSS  点击:(254)  评论:(0)  加入收藏
CSS 新功能:让编码更高效
CSS 是一种不断发展的语言。每一次迭代,它都会变得越来越好。因此,了解最新的 CSS 功能非常重要,这样你才能在项目中使用它们,减少对第三方库的依赖。本文将介绍一些即将推出的...【详细内容】
2023-11-16  Search: CSS  点击:(160)  评论:(0)  加入收藏
使用 CSS Grid 的响应式网页设计:消除媒体查询过载
前言你是否厌倦了在实现响应式网站时需要管理多个媒体查询?说再见复杂的代码,拥抱更简单的解决方案吧:CSS Grid。在这篇文章中,我们将踏上一场激动人心的 CSS Grid 之旅,发现它如...【详细内容】
2023-11-10  Search: CSS  点击:(268)  评论:(0)  加入收藏
CSS这几个函数很实用,也很简单
calc()CSS 的 calc 函数非常实用,很多情况下,我们都会用到这个函数。calc 函数支持加减乘除四种运算,但是,它也有限制: 运算符前后带有单位或者百分比的数值,只能进行加减,不能进行...【详细内容】
2023-11-08  Search: CSS  点击:(219)  评论:(0)  加入收藏
这三个CSS生成器千万别错过啦!
前言 大家好我是小卢,「新拟态风格」和「磨砂玻璃」风格都是让人眼前一亮的一种设计风格,已经成为了最具代表性的设计趋势之一。 但是我们在真正写 CSS 的时候不容易调整这个...【详细内容】
2023-11-03  Search: CSS  点击:(158)  评论:(0)  加入收藏
▌简易百科推荐
12 个超级实用的 CSS 技巧
user-selectuser-select 属性可以用来控制用户是否能够选择文本。<div> <p>You can&#39;t select this text.</p></div><p>You can select this text.</p>CSS:div { width...【详细内容】
2023-12-19  前端充电宝  微信公众号  Tags:CSS   点击:(127)  评论:(0)  加入收藏
原生CSS嵌套使用,你学明白了吗?
如果你是一个前端开发人员,那么你应该使用过CSS预处理器以及预处理器中的嵌套特性。它一直是一个受欢迎的功能,我一直都在使用CSS预处理器。今年所有的主流浏览器都支持原生CS...【详细内容】
2023-12-06  南城大前端  微信公众号  Tags:CSS   点击:(179)  评论:(0)  加入收藏
CSS_Flex 那些鲜为人知的内幕
前言Flex想必大家都很熟悉,也是大家平时在进行页面布局的首选方案。(反正我是!)。不知道大家平时在遇到Flex布局属性问题时,是如何查阅并解决的。反正,我每次记不住哪些属性或...【详细内容】
2023-12-06  前端柒八九  微信公众号  Tags:CSS   点击:(138)  评论:(0)  加入收藏
CSS:这几个伪类,你用了吗
## :root 伪类:root 伪类是匹配文档的根元素,很多时候,根元素也就是 html 元素,用 root 伪类来匹配根元素,目的就是解决根元素不是 html 的场景,比如根元素是 svg 的时候。 root...【详细内容】
2023-11-30  读心悦  微信公众号  Tags:CSS   点击:(169)  评论:(0)  加入收藏
让你开发更舒适的 Tailwind 技巧
免费体验 Gpt4 plus 与 AI作图神器,我们出的钱 体验地址:体验使用 Tailwind CSS,我避免了在 React 项目中复制大量 CSS 文件的麻烦,使网页开发变得更加迅速高效。虽然 Tailwind...【详细内容】
2023-11-28  大迁世界  微信公众号  Tags:Tailwind   点击:(175)  评论:(0)  加入收藏
Display和Visibility的区别,你了解了吗?
采用CSS实现元素隐藏的方法有很多种,比如定位到屏幕之外、透明度变换等。而常见的两种方式是将元素设置为display:none或者visibility:hidden。元素样式设置为display:none当...【详细内容】
2023-11-27  读心悦  微信公众号  Tags:Display   点击:(170)  评论:(0)  加入收藏
新 CSS Math方法:Rem() 和 Mod()
CSS 添加了许多新的数学函数来补充旧有的函数(如 calc() 和最近的 clamp() )。这些函数最终都表示一个数值,但其工作原理的细微差别并不总是一开始就很清楚。本文介绍每个函数...【详细内容】
2023-11-23  大迁世界  微信公众号  Tags:CSS   点击:(254)  评论:(0)  加入收藏
CSS 新功能:让编码更高效
CSS 是一种不断发展的语言。每一次迭代,它都会变得越来越好。因此,了解最新的 CSS 功能非常重要,这样你才能在项目中使用它们,减少对第三方库的依赖。本文将介绍一些即将推出的...【详细内容】
2023-11-16  大迁世界  微信公众号  Tags:CSS   点击:(160)  评论:(0)  加入收藏
使用 CSS Grid 的响应式网页设计:消除媒体查询过载
前言你是否厌倦了在实现响应式网站时需要管理多个媒体查询?说再见复杂的代码,拥抱更简单的解决方案吧:CSS Grid。在这篇文章中,我们将踏上一场激动人心的 CSS Grid 之旅,发现它如...【详细内容】
2023-11-10  前端YUE  微信公众号  Tags:CSS   点击:(268)  评论:(0)  加入收藏
2024年了,别只使用React,需要学习一下Vue,不然没出路了
最近,我的朋友因为不熟悉 Vue.js 而未能通过面试。她平时工作中大部分时间都在使用React,所以也懒得去了解其他前端框架。世界上所有的前端框架我们都应该熟悉吗?不,这是极其不...【详细内容】
2023-11-08  web前端开发  微信公众号  Tags:Vue   点击:(292)  评论:(0)  加入收藏
站内最新
站内热门
站内头条