js-循环返回多条数据,每条数据文本超过三行进行展开与收起的实现

1.基本需求

        返回多条数据,每条数据在一定宽度的盒子内,文本超过三行进行文本的展开与收起

2.实现逻辑

        对于返回的每条数据添加属性expend:false来在循环中进行对于展开收起的判断。

动态计算盒子宽度随着分辨率的变化而变化的值boxWidth。获取返回数据文本长度*字体大小除3与boxWidth值进行比较(动态判断展开与收起是否展示)

3.代码


<template><div class="all"><div class="content" ref="box"><!-- 循环数据 --><div class="contentAll" v-for="(item,index) in List" :key="index" ><div class="details" ><!-- 内容 --><!-- 动态切换类名 进行展开与收起 --><div :class="{'text-container': !item.expand, 'expand':item.expand }">{{ item.remark }}</div><!-- 通过item.remark.length*14/3 获取文本字数*字体大小/3判断是否超过盒子宽度 --><div v-if="item.remark.length*14/3>=boxWidth" class="btn" @click="toggleExpand(index)">{{ item.expand ? '收起' : '展开' }}</div></div></div></div></div>
</template>
<script>export default {name: 'ye',data(){return{// 宽度boxWidth: 0,List: [{expand:false,remark: "呀呀呀呀呀呀哎呀呀",},],}},// 进行监听屏幕的分辨率 进行计算宽度mounted() {window.addEventListener('resize', this.handleResize)},// 移除监听beforeDestroy() {window.removeEventListener('resize', this.handleResize)},methods: {// 动态获取盒子宽度handleResize() {// 通过this.$refs.box.offsetWidth获取盒子宽度const width = this.$refs.box.offsetWidth;if (width!=0) {this.boxWidth=width-40;}},// 动态点击取反(展开与收起)toggleExpand(index) {this.List[index].expand = !this.List[index].expand},// 请求后端数据返回queryList() {// 对于接口请求的数据结构 每一个元素添加展开收起的初始值.expand = false;Api.a.then(resp => {let arr = resp.data;for (let iterator of arr) {iterator.expand = false;}this.List = arr;})},},// 初始加载时,进行计算activated() {this.handleResize()},}
</script>
<style lang="less" scoped>
// 内容块
.contentAll {flex-grow: 0;flex-shrink: 0;list-style: none;box-sizing: border-box;padding-left: 40px;position: relative;}.content{height:500px;width:100%;overflow-y:scroll;overflow-x: hidden;}.details {display: flex;align-items: baseline;min-height: 80px;margin-left: 10px;border-bottom: 1px solid #d5d5d5 ;}/* 默认显示3行,超出部分隐藏 */.text-container {overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 3; /* 行数 */-webkit-box-orient: vertical;}/* 点击按钮后展开 */.expand {-webkit-line-clamp: initial; /* 移除行数限制 */}.btn{width: 140px;height: 40px;cursor: pointer;color: #006eff;}
</style>

4.总结

        缺点就是没有精确的计算返回文本的长度,汉字,数字,字母,空格以及字间距没有完全精确的计算会导致(展开与收起)判断出现不准确

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/541454.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录刷题day24|回溯理论基础组合问题

文章目录 day24学习内容一、修剪二叉搜索树1.1、什么是回溯法1.2、递归与回溯1.3、回溯法的效率1.4、回溯法解决的问题类型1.5、如何理解回溯法1.6、回溯算法模板 二、组合问题2.1、思路2.2、正确写法-没有剪枝2.2.1、为什么不能写i < n2.2.2、为什么不能写startIndex02.2.3…

helm部署hadoop

&#xff08;作者&#xff1a;陈玓玏&#xff09; 参考helm仓库的文档&#xff1a;https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop helm helm repo add pfisterer-hadoop https://pfisterer.github.io/apache-hadoop-helm/ helm install hadoop pfistere…

LeetCode230题:二叉搜索树中第K小的元素(python3)

代码思路&#xff1a;二叉搜索树中序遍历为递增序列。 class Solution:def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:def dfs(root):if not root:returndfs(root.left)if self.k 0:returnself.k - 1if self.k 0:self.res root.valdfs(root.right)se…

Gitee 实战配置

一、Gitee 注册帐号 官网:https://gitee.com点击注册按钮。填写姓名。填写手机号。填写密码。点击立即注册按钮二、安装GIT获取公钥 1.官网下载git下载地址:https://git-scm.com/download/win 2.安装git,双击运行程序,然后一直下一步,直至完成。 3.安装完成后,在 CMD 命令…

蓝桥杯 - 大石头的搬运工 C++ 前缀和 算法 附Java python

题目 思路和解题方法 这段代码的目标是计算给定点集的最小总移动成本&#xff0c;使得所有点都在同一直线上。它通过计算每个点左边和右边的移动成本&#xff0c;然后在所有可能的分割点中选择最小成本。具体步骤如下&#xff1a; 读取输入的点集&#xff0c;每个点表示为 (y, …

[AIGC] Spring Boot中的切面编程和实例演示

切面编程&#xff08;Aspect Oriented Programming&#xff0c;AOP&#xff09;是Spring框架的关键功能之一。通过AOP&#xff0c;我们可以将代码下沉到多个模块中&#xff0c;有助于解决业务逻辑和非业务逻辑耦合的问题。本文将详细介绍Spring Boot中的切面编程&#xff0c;并…

【常规】使用bat批量修改文件名

文章目录 一、目标二、主要思路三、步骤&#xff08;一&#xff09;进入目标文件夹&#xff08;二&#xff09;获取所有目标文件名称1、创建文本文档&#xff08;txt格式&#xff09;2、写代码3、生成bat文件4、执行bat文件&#xff0c;获取原文件名列表&#xff1a; &#xff…

redis如何保证缓存一致性

方式一&#xff1a;先更新数据库&#xff0c;再更新缓存场景 当有两个线程A、B&#xff0c;同时对一条数据进行操作&#xff0c;一开始数据库和redis的数据都为tony&#xff0c;当线程A去修改数据库&#xff0c;将tong改为allen&#xff0c;然后线程A在修改缓存中的数据&#x…

实验一:关联规则 (见U盘)

实验名称 关联规则 实验时间 3月 14 日星期 四 第3.4节 实验目的 利用 Python 对关联规则算法进行调用。能够使用 Python 调用关联规则算法。首先使用apriori ,fpgrowth 或者 fpmax 函数来找出频繁项集&#xff0c;然后使用 association_rules …

基础算法-分治算法-学习

现象&#xff1a; 基础算法-分治算法-学习 分而治之&#xff0c;将复杂问题分成小问题&#xff0c;小问题直接求解&#xff0c;最后合并得到最终结果&#xff0c; 和递归思想有点相近&#xff0c;也是区分小问题自己解决&#xff0c;所以在分治算法很多以递归的方式实现 每个…

【Leetcode每日一题】 递归 - 反转链表(难度⭐)(35)

1. 题目解析 题目链接&#xff1a;206. 反转链表 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 一、递归函数的核心任务 递归函数的主要职责是接受一个链表的头指针&#xff0c;并返回该链表逆序后的新头结点。递归…

【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 见《【研发日记】Matlab/Simulink…