内容的展开/收起

样式

数据超过两行则用省略号代替,并且显示“展开”:

点击“展开”,显示全部数据,并且显示“收起”:

数据不超过两行则不显示“展开/收起”;

index.vue

<div class="head headTitle">参与房管厅<span class="highlight">({{detail && detail.contentList.length}})</span>:</div>
<div :class="!showMore ? 'contentList' : 'contentShow'" ref="contentList-container" ><span class="contentName" v-for="(item, index) in (detail ? detail.contentList : [])" :key="index">{{item.name}};</span>
</div>
<div class="showMore" v-if="tooMany" @click="expand"><div class="highlight">{{!showMore ? '展开' : '收起'}}<div :class="!showMore ? 'icon_more' : 'icon_less'"></div></div>
</div>

index.scss

.head {width: 118px;text-align: left;
}
.headTitle {color: rgba($color: #1C1F23, $alpha: 0.6);font-size: 14px;font-weight: 600;
}
.contentList {max-width: 774px;max-height: 42px;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden;.contentName {line-height: 21px;}
}
.contentShow {max-width: 774px;min-height: 42px;.contentName {line-height: 21px;}
}
.showMore {width: 44px;margin-left: 8px;cursor: pointer;position: relative;.highlight {position: absolute;bottom: 0;font-weight: 400;color: #FFB200;display: flex;.icon_more {display: inline-block;vertical-align: text-top;width: 16px;height: 16px;background-image: url('~@/img/iconNew/icon_more.svg');}.icon_less {display: inline-block;vertical-align: text-top;width: 16px;height: 16px;transform: rotate(180deg);background-image: url('~@/img/iconNew/icon_more.svg');}}
}

index.js

import { mapState, mapActions } from 'vuex'
import { formatNum } from '@/common/utils'export default {name: 'detail',data () {return {id: 0,tooMany: false,showMore: false}},watch: {$route () {if (this.id !== this.$route.query.id) {this.id = this.$route.query.id}}},computed: {...mapState('page', ['detail'])},async mounted () {if (this.id !== this.$route.query.id) {this.id = this.$route.query.id}await this.getDetailInfo(this.id)this.handleShowMore()},methods: {formatNum,...mapActions('hallWar', ['getDetailInfo']),handleShowMore () {const item = this.$refs["tingList-container"]this.observer = new ResizeObserver(() => {console.log('watch observer') // 监听触发方法if (item.scrollHeight > 42) {console.log('itemmmm', item.clientHeight)this.tooMany = true}});this.observer.observe(item) // 监听元素},expand () {this.showMore = !this.showMoreconsole.log('showMore', this.showMore)}}
}

参考文献:
一个较新的JavaScript API——ResizeObserver 的使用

【JavaScript】内容的展开/收起相关推荐

  1. html文字折叠隐藏出现问题,javascript实现文字隐藏、展开收起的简单示例

    感兴趣javascript实现文字隐藏.展开收起的简单示例的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. function init(){ var len = 14; //默认显示字数 ...

  2. 解决css内容高度不固定,transition手风琴效果失效的情况(展开收起)

    最近写了一个筛选功能,要使用手风琴效果展开内容,但是高度不固定,故此添加的动画效果失效,对此有两种解决方案 动画失效的原理是: 如果当前设置动画的元素他的父元素高度为auto的时候,且当前元素未设置p ...

  3. 【jQuery笔记Part2】02-jQuery展开收起动画帷幔效果案例下拉菜单案例显示隐藏更多案例折叠菜单案例

    展开&收起动画&案例 HTML DOM overflow 属性 展开 slideDown(毫秒, 完成回调函数) 收起 slideUp(毫秒, 完成回调函数) 切换 slideTogg ...

  4. 收起 展开 循环 php,CSS3 实现侧边栏展开收起动画

    这篇文章主要介绍了如何使用CSS3 实现侧边栏展开收起动画,并附上了示例代码,非常的详细,推荐给需要的小伙伴. @keyframes 规则用于创建动画. @keyframes 中规定某项 CSS 样式 ...

  5. vue中多行文本标签_vue控制多行文字展开收起的实现示例

    这里讲一下,如何使用vue控制多行文字展开收起(也叫控制文字展开隐藏). 效果: 这里设置了控制三行,如果超过三行会展示,"显示更多" 超出文字显示省略号.点击"显示更多 ...

  6. android从一点展开动画,Android自定义View——从零开始实现可展开收起的水平菜单栏...

    大家要是看到有错误的地方或者有啥好的建议,欢迎留言评论 前言:最近项目里要实现一个 可展开收起的水平菜单栏控件,刚接到需求时想着用自定义View自己来绘制,发现要实现 圆角.阴影.菜单滑动等效果非常复 ...

  7. 微信小程序-时间轴/抽屉展开收起特效

    微信小程序项目中用到的时间轴展示和抽屉展开收起特效 本篇内容为原创,转载请注明出处. 一.效果图 默认为展开状态  ---  左:展开:右:收起 二.代码片段: 1.wxml部分 <view c ...

  8. react 展开收起写法(手动展开收起 和 自动展开收起)

    一:手动展开收起 html写法: <div className="pack-unfold">{isShow.includes(item.chapterId)?<s ...

  9. vue中实现文字超过2行... 展开-收起(兼容ie)

    先看看实际效果 2.需求一步一步分析 当文字超出省略号 就想到css样式实现(ie不兼容) overflow: hidden; text-overflow: ellipsis;display: -we ...

最新文章

  1. MindSpore数据集mindspore::dataset
  2. 大学python和vb哪个简单-python和vb哪个简单
  3. 八条是阿里6万工程师正在重点攻克的难关
  4. MATLAB imshow之后在四周加上边框
  5. Java工具实现无水印批量下载
  6. Fast-SCNN:多分支结构共享低级特征的语义分割网络
  7. Linux_基础_磁盘管理
  8. Sharepoint 2010 Survey 提交后不跳转到Defalut页面 跳转到其他页面
  9. js实现全排列组合算法
  10. JAVA 发送邮件功能
  11. php手机下载功能,phpwind手机客户端1.2版主要功能亮点详解
  12. 基于ERP与移动通信平台的商务系统设计
  13. js中this指向的四种规则+ 箭头函数this指向
  14. 全国计算机网络英语,2007年10月自考试题计算机网络管理全国试卷(国外英语资料).doc...
  15. 统计学之离散指标(全距、内距、异众比率、平均差与标准差)
  16. 机器学习:软件漏洞分析
  17. iOS开发:使用大图+脚本,生成各种size的app icon和图片素材
  18. C语言基础和语法知识
  19. AD16在走线至焊盘时不能自动定位到焊盘中心
  20. ios 多线程gdc_GDC 2019中的Heretic,Megacity版本,实时光线追踪以及更多新闻

热门文章

  1. 二进制文件在linux如何表示,如何通过静态分析找出二进制文件是否在Linux上使用某些系统调用?...
  2. HDU6194(后缀数组)
  3. Js获取上传文件的绝对路径时总是的到C:\fakepath\+文件名称 解决方案
  4. 认识LTE(八):LTE中的反馈:闭环空分复用(TM4)
  5. Mock server是什么
  6. 今天是我在csdn的1265天
  7. C r e a t e P r o c e s s的b I n h e r i t H a n d l e s参数
  8. CentOS 7 安装配置 k8s 1.25.3
  9. 解决网络连接正常,网页打不开的问题
  10. 邮件中的网页链接地址打不开的解决方法