文字比较难解释,直接看图应该就懂是要做什么了。
需求
工作中遇到的,需求就是超过四行得有个展开按钮,点击展开显示所有内容,不超过四行的话就不需要这个按钮并显示所有内容。
思路首先得判断文本自否超过四行,因为这些一般都是是前端异步请求然后后端发送过来,在组长的指导下,使用了 Vue 中的 nextTick 来监听 DOM 中是数据变化。接下来主要是 css 上的思路,其实上图可以分为两部分,如下图,标号1的部分展示前面三行,标号为2的部分会根据1的行数判断缩进的大小,然后展示第四行。最后通过背景色的控制让两者看上去是一段文字。
代码
核心代码是中间那部分,其他的不用关注
<template> <div> <div style="text-align: center">{{title}}</div> <div class="top-prove">为了证明楼下的那货不会对我造成影响</div> <div :class="showTotal "> <div class="intro-content" :title="introduce" ref="desc"> <span class="merchant-desc" v-if="introduce"> {{introduce}} </span> <div class="unfold" @click="showTotalIntro" v-if="showExchangeButton"> <p>{{exchangeButton "bottom-prove">为了证明楼上的那货不会对我造成影响</div> <div class="change-buttom"> <div class="long" @click="tryLong">点这试试一段比较长的文字</div> <div class="short" @click="tryShort">点这试试一段比较短的文字</div> </div> </div> </template> <script> export default { name: 'Spread', data () { return { title: '演示展开收起', introduce: '', // 是否展示所有文本内容 showTotal: true, // 显示展开还是收起 exchangeButton: true, // 是否显示展开收起按钮 showExchangeButton: false, rem: '' }; }, mounted () { this.init(); }, methods: { showTotalIntro () { console.log(this.showTotal); this.showTotal = !this.showTotal; this.exchangeButton = !this.exchangeButton; }, getRem () { console.log('getRem'); const defaultRem = 16; let winWidth = window.innerWidth; console.log('winWidth:' + winWidth); let rem = winWidth / 375 * defaultRem; return rem; }, init () { this.introduce = '拥有财富、名声、权力,这世界上的一切的男人--哥尔·D·罗杰,在被行刑受死之前说了一句话,让全世界的人都涌向了大海。“想要我的宝藏吗?如果想要的话,那就到海上去找吧,我全部都放在那里。”,世界开始迎接“大海贼时代”的来临。拥有财富、名声、权力,这世界上的一切的男人 “海贼王”哥尔·D·罗杰,在被行刑受死之前说了一句话,让全世界的人都涌向了大海。“想要我的宝藏吗?如果想要的话,那就到海上去找吧,我全部都放在那里。”,世界开始迎接“大海贼时代”的来临。'; }, tryLong () { let longIntroduce = 'Vue是一套用于构建用户界面的渐进式框架。Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。Vue (读音 /vju"less" scoped rel="stylesheet/less"> .top-prove { height: 100px; width: 100%; background: #dddddd; text-align: center; line-height: 100px; } .total-introduce { height: auto; overflow: hidden; font-size: 14px; color: #434343; margin: 10px; .intro-content { .merchant-desc { width: 100%; line-height: 21px; } } .unfold { display: block; z-index: 11; float: right; width: 40px; height: 21px; p { margin: 0; line-height: 21px; color: #7fbe87; } } } .detailed-introduce { font-size: 14px; color: #434343; position: relative; overflow: hidden; margin: 10px; .intro-content { // 最大高度设为4倍的行间距 max-height: 84px; line-height: 21px; word-wrap: break-word; /*强制打散字符*/ word-break: break-all; background: #ffffff; /*同背景色*/ color: #ffffff; overflow: hidden; .merchant-desc { width: 100%; line-height: 21px; } &:after, // 这是展开前实际显示的内容 &:before { content: attr(title); position: absolute; left: 0; top: 0; width: 100%; color: #434343 // overflow: hidden; } // 把最后最后一行自身的上面三行遮住 &:before { display: block; overflow: hidden; z-index: 1; max-height: 63px; background: #ffffff; } &:after { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; height: 81px; /*截取行数*/ -webkit-line-clamp: 4; text-overflow: ellipsis; -webkit-box-sizing: border-box; box-sizing: border-box; /*行首缩进字符数,值为[(截取行数-1)*尾部留空字符数]*/ text-indent: -12em; /*尾部留空字符数*/ padding-right: 4em; } .unfold { z-index: 11; width: 40px; height: 21px; outline: 0; position: absolute; right: 0; bottom: 0; p { margin: 0; line-height: 21px; color: #7fbe87; } } } } .bottom-prove { height: 100px; width: 100%; background: #dddddd; text-align: center; line-height: 100px; } .change-buttom { font-size: 14px; color: #2371be; .long { text-align: 21px; text-align: center; height: 21px; } .short { text-align: 21px; text-align: center; height: 20px; } } </style>
演示动画
另一种思路
简书中i_May的方法,思路有些不同,也可以参考下。
问题工作中该页面打包到测试环境在微信中打开后,三个省略号消失了,问题还在找,找到了会及时更新。因为符号可能会在行尾出现点显示问题,暂时还没找到解决办法,但出现概率较小,出现了也不影响。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 《怪猎荒野》PS5Pro主机版对比:B测性能都不稳定
- 黄宝欣.1992-黄宝欣金装精选2CD【HOMERUN】【WAV+CUE】
- 群星.1996-宝丽金流行爆弹精丫宝丽金】【WAV+CUE】
- 杜德伟.2005-独领风骚新歌精选辑3CD【滚石】【WAV+CUE】
- 安与骑兵《心无疆界》[低速原抓WAV+CUE]
- 柏菲唱片-群星〈胭花四乐〉2CD[原抓WAV+CUE]
- 金典女声发烧靓曲《ClassicBeautifulSound》2CD[低速原抓WAV+CUE]
- 王杰1992《封锁我一生》粤语专辑[WAV+CUE][1G]
- 群星《一人一首成名曲 (欧美篇)》6CD[WAV/MP3][7.39G]
- 东来东往2004《回到我身边·别说我的眼泪你无所谓》先之唱片[WAV+CUE][1G]
- MF唱片-《宝马[在真HD路上]》2CD[低速原抓WAV+CUE]
- 李娜《相信我》新时代[WAV+CUE]
- 2019明达发烧碟MasterSuperiorAudiophile[WAV+CUE]
- 蔡幸娟.1993-相爱容易相处难【飞碟】【WAV+CUE】
- 陆虎.2024-是否愿意成为我的全世界【Hikoon】【FLAC分轨】