拜托,css这样实现多行文本“展开收起” 超酷的好吧

作者分享了如何实现文字展开与收起功能的过程,包括使用`-webkit-line-clamp`和div高度限制的方法,以及在解决移动端适配问题上的尝试和最终结合两者优点的解决方案。内容还涉及前端开发资源和面试准备。
摘要由CSDN通过智能技术生成

前段时间接到一个需求,关于文字展开和收起的,走了很多路,踩了很多坑。

在这个夜深人静,想你想到泪流的时候,决定记录分享一下。

需求如下所述:

  1. 未满两行时

  1. 超过两行,少于7行时

未展开

展开

  1. 超过7行时

未展开

展开

就如上面所述,我倒是第一次做这种需求,于是就网上搜索下案例,然后就搜出下面这篇文章:

文章链接:https://juejin.cn/post/6963904955262435336#comment

点赞和评论都挺多的,于是就用他的方案来实现了。

但是后面发现有些问题,其实他的文章后面的评论区也有读者提出来了问题。

其实我觉得问题也不大,于是问哦下设计大佬

显然,就收到了拒绝。

被拒绝是十分正常不过的事情了,不过这比被发好人卡杀伤力少太多了,不信你听听:

“你真的挺好的,人也很优秀,但是配不上我”

这矫情的措辞结构

经历过的人会懂

可能是孤独让情绪变得脆弱,毫无头绪的我,开始寻求网友的帮助。

群里就有大佬提供了这个

https://codepen.io/xboxyan/pen/LYWpWzK

这个跟方法跟 上面介绍的那篇文章的方法差不多

不同点在于这个方法是利用div高度来限制文字显示的行数的。

上面文章里是利用-webkit-line-clamp来限制行数。

然后它的省略号也是在label按钮里模拟出来的。

上面文章里的方法的缺点上面已经说了,那么群里推荐的方法是否也能解决问题呢?

其实不行,本来在pc上看确实是没问题了,但是在安卓和ios看发现不太行。

发现在ios上限制7行的时候,显示除了7.5行,就是多了半行。或者 总有一个手机对不齐(我们要适配各种安卓机和低端ios)

虽说两个方法都有缺点,但是都有优点,于是结合两者的优点就进行了我的方案的实现。

我的方案


<input

type=“checkbox”

class=“toggleInput”

id=“toggleInput”

v-model=“isUnFold”

/>

<label

class=“btn”

for=“toggleInput”

v-if=“isMoreThan2Line && (!isUnFold || isMoreThan7Line)”

{{ isUnFold ? ‘展开’ : ‘收起’ }}</label

概述文字概述文字概述文字概述文字概

述文字概述文字概述文字概述文字概述文字概述文字

<label

class=“btn-no-absolute”

for=“toggleInput”

v-if=“isUnFold && !isMoreThan7Line”

收起</label

首先,跟上面那篇文章里介绍的一样,用input来记录当前是展开还是收起状态,

不同点是我用了两个label按钮。

一个label是不用定位的,直接跟在文字的末尾。这种是作为文字超过两行,但是未超过七行,展开的状态。

前面的label则是绝对定位到文字盒子的末尾。作为 文字超过两行未展开,展开后文字超过七行的情况。

可以看下css的实现

.activity-desc-wrapper {

display: flex;

.toggleInput {

display: none;

}

.toggleInput:checked + .activity-desc {

-webkit-line-clamp: 7;

}

.activity-desc {

padding: 0;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)


核心竞争力,怎么才能提高呢?

成年人想要改变生活,逆转状态?那就开始学习吧~

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

linux

前端资料汇总

完整版PDF资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue实现多行文本展开收起功能可以通过计算多行文本的高度来进行判断,并使用Vue的条件渲染来实现展开收起效果。 首先,在data中定义一个变量,例如`isExpanded`,用于控制文本展开收起状态,默认值设为`false`。 然后,在模板中使用条件渲染来根据`isExpanded`的值展示不同的内容。 例如,使用`v-if`指令来判断是否展开,如果展开则显示完整文本,否则只显示指定行数的文本。可以使用`v-text`指令来绑定文本内容。通过CSS的`line-clamp`属性来设置文本行数,超出的部分将被省略。 ``` <template> <div> <div v-if="isExpanded"> <div v-text="text"></div> </div> <div v-else> <div class="clamp-line" v-text="text"></div> </div> <button @click="toggleExpand"> {{ isExpanded ? '收起' : '展开' }} </button> </div> </template> <script> export default { data() { return { isExpanded: false, text: "这是一段多行文本" }; }, methods: { toggleExpand() { this.isExpanded = !this.isExpanded; } } }; </script> <style scoped> .clamp-line { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: 3; /* 设置为需要显示的行数 */ -webkit-box-orient: vertical; } </style> ``` 以上代码中,点击按钮时会触发`toggleExpand`方法,通过修改`isExpanded`的值来切换展开收起状态。根据`isExpanded`的值,使用不同的模板来渲染文本内容。 按钮的文本内容也根据`isExpanded`的值来显示“展开”或“收起”。点击按钮时,会调用`toggleExpand`方法切换`isExpanded`的值。 通过以上代码和样式设置,就可以实现一个简单的多行文本展开收起的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值