uniapp多行文本展开或收起(兼容h5、微信小程序,其它未测试)

news2024/11/25 10:36:27

文章目录

  • 一、效果图展示
    • 1、收起
    • 2、展开
    • 3、文本过短时隐藏按钮【查看更多、收起】
  • 二、代码实现
    • 原理:判断文本是否过短
    • 1、html
    • 2、css
    • 3、 js
      • (1)data数据定义
      • (2)获取文本高度
      • (3) 获取行数
      • (4)展示隐藏【查看更多、收起】按钮


一、效果图展示

1、收起

在这里插入图片描述

2、展开

在这里插入图片描述

3、文本过短时隐藏按钮【查看更多、收起】

在这里插入图片描述

二、代码实现

原理:判断文本是否过短

  • 文本过短时隐藏按钮,需要知道文本全部展示的行数
  • 文本收起时,微信小程序不能直接获取文本展示的高度
  • 文本展示时,微信小程序不能直接获取文本收起的高度
  • 所以使用占位文本获取单行文本高度,最终通过计算得到文本全部展示时的行数
  • 本文介绍的方法兼容h5、微信小程序
  • 如果只是h5(无需兼容微信小程序),可以使用以下方法,不过多介绍
  • 文本收起时,可以用$refs.名字.$el获取高度:clientHeight文本收起高度,scrollHeight 文本全部展示的高度
  • clientHeightscrollHeight 进行比较就可以判断文本是否过短

1、html

  • 文本收起时添加样式showAllQyjs
  • 文本长度 lines 超过4行时展示【查看更多、收起】按钮
  • 占位文本用来获取单行文本高度,获取高度后 placeholder 参数置空 ''
<!-- 文本内容 -->
<view>
	<text id="qyjs" :class="{ showAllQyjs: showAll == false, qyjs: true }">{{ info.desc
	}}</text>
</view>
<!-- 占位文本 -->
<view>
	<text id="placeholder" class="qyjs">{{ placeholder }}</text>
</view>
<!-- 展开收起按钮 -->
<view class="label showAll" @click="showinfo" v-if="lines > 4">
	{{ showAll ? '收起' : '查看更多' }}
	<uni-icons :type="showAll ? 'top' : 'bottom'" size="12" color="#B1AFB6"></uni-icons>
</view>

2、css

  • showAllQyjs 文本超过4行隐藏样式
.showAll {
    // 展开收缩按钮居中
	text-align: center;
}

.qyjs {
	display: -webkit-box; //将对象作为弹性伸缩盒子模型显示
}

.showAllQyjs {
	display: -webkit-box; //将对象作为弹性伸缩盒子模型显示
	overflow: hidden; //超出部分隐藏
	-webkit-line-clamp: 4; //显示几行
	text-overflow: ellipsis; //超出部分显示省略号
	-webkit-box-orient: vertical;
}

3、 js

(1)data数据定义

data() {
	return {
		// 企业介绍
		showAll: true, //控制展开收起
		lineHeight: 0, //单行文本高度
		textHeight: 0, //文本高度
		placeholder: '占位文本',
		info: {
			desc: '请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容请填写介绍内容',
			// desc: '请填写介绍内容请填写介绍内容请填写介内容请填写介内容请填写介内容范德萨',
		},
	};
},

(2)获取文本高度

  • 1.获取文本展示高度
  • 2.获取单行文本高度
  • 3.占位文本置空
  • 4.获取高度后收起文本
methods: {
	// 获取文本高度
	getQyjsHeight() {
		let that = this;
		const query = uni.createSelectorQuery().in(this);
		
		//获取文本展示高度
		query.select('#qyjs').fields({
			size: true,
		}, data => {
			that.textHeight = data.height;
			console.log(that.textHeight, "得到节点信息qyjs" + JSON.stringify(data),);
		}).exec();
		
		//获取单行文本高度
		query.select('#placeholder').fields({
			size: true,
		}, data => {
			that.lineHeight = data.height;
			console.log(that.lineHeight, "得到节点信息placeholder" + JSON.stringify(data));
		}).exec();

		//占位文本置空
		this.placeholder = '';
		//获取高度后收起文本
		this.showAll = false
	},
	
},

(3) 获取行数

  • 计算属性获取(获取高度方法后面无法拿到高度,因此需要监听)
  • Math.floor() 向下取整,例如8.5 取 8
computed: {
	//文本所占总行数
	lines() {
		let line = Math.floor(this.textHeight > 0 && this.lineHeight > 0 ? this.textHeight / this.lineHeight : 0)
		return line
	}
},

(4)展示隐藏【查看更多、收起】按钮

// 展示隐藏查看更多
showinfo() {
	this.showAll = !this.showAll
},

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

典型的ETL使用场景

典型的ETL使用场景 ETL( Extract&#xff0c;Transform&#xff0c;Load)是一种用于数据集成和数据转换的常用技术。它主要用于从多个数据源中提取数据&#xff0c;对数据进行清洗、转换和整合&#xff0c;最后加载到目标系统中。ETL 的使用场景非常广泛&#xff0c;下面将介绍…

StringBuffer类和StringBuilder类的相关知识点

首先这俩个类都是可变序列&#xff0c;与String类不同String类是不可变序列&#xff0c;StringBuffer和StringBuilder 他们是将数据存储在char value[] 待会会给大家看一下源码&#xff0c;这俩个类相当于是String类的升级版&#xff0c;它可以让我们对字符串的操作更加的便捷…

探秘 Sass 之路:掌握强大的 CSS 预处理器(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【开源】基于Vue.js的实验室耗材管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 081 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S081。} 文末获取源码&#xff0c;项目编号&#xff1a;S081。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗…

shiny的图片如何插入,为什么会裂开?

因为你没有把资源放在内部&#xff1a; Shiny学习(二) ||构建用户界面 - 简书d 当然也有例外比如&#xff1a; shiny-如何在 Shinydashboard R 中 dashboard 标题的中心显示图像&#xff1f; - 糯米PHP

羊大师提问鲜羊奶冷冻还好喝吗?

羊大师提问鲜羊奶冷冻还好喝吗&#xff1f; 在当今追求健康、养生的时代背景下&#xff0c;各种新奇的饮食趋势层出不穷。鲜羊奶冷冻成为了备受追捧的美食新潮流。不仅具备饮食的功能&#xff0c;更是一种享受。本文小编羊大师将从鲜羊奶冷冻的制作工艺、营养价值和市场前景等…

Doris 集成 ElasticSearch

Doris-On-ES将Doris的分布式查询规划能力和ES(Elasticsearch)的全文检索能力相结合,提供更完善的OLAP分析场景解决方案: (1)ES中的多index分布式Join查询 (2)Doris和ES中的表联合查询,更复杂的全文检索过滤 1 原理 (1)创建ES外表后,FE会请求建表指定的主机,获取所有…

Apache Doris 在某工商信息商业查询平台的湖仓一体建设实践

本文导读&#xff1a; 信息服务行业可以提供多样化、便捷、高效、安全的信息化服务&#xff0c;为个人及商业决策提供了重要支撑与参考。本文以某工商信息商业查询平台为例&#xff0c;介绍其从传统 Lambda 架构到基于 Doris Multi-Catalog 的湖仓一体架构演进历程。同时通过一…

打CTF比赛/HVV挖洞需要了解哪些知识?

参加CTF&#xff08;Capture The Flag&#xff09;比赛或参与漏洞赏金猎人&#xff08;HVV, HackerOne Vulnerability Hunter&#xff09;活动需要以下关键知识&#xff1a; 1. 网络和系统安全&#xff1a; 理解TCP/IP、DNS、HTTP等网络协议。 掌握操作系统安全&#x…

网上售房管理系统

摘 要 网上售房管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 从而完成完善全面的房屋买卖管理功能&#xff0c;使网上售房管…

关于先更新再缓存这种缓存方案设计的思考

这两天正在做公司缓存方面的设计&#xff0c;然后就把自己的思考过程整理一下。 网上对于这块的内容讲解也非常的多&#xff0c;有些说的也都非常的在理&#xff0c;关于缓存一致性的方案也就那么几种&#xff0c;如&#xff1a;先更新、再删&#xff0c;先删、在更新&#xff…

Linux中的网络配置

本章主要介绍网络配置的方法 网络基础知识查看网络信息图形化界面修改通过配置文件修改 1.1 网络基础知识 一台主机需要配置必要的网络信息&#xff0c;才可以连接到互联网。需要的配置网络信息包括IP、 子网掩码、网关和 DNS 1.1.1 IP地址 在计算机中对IP的标记使用的是3…

JRT导出协议实现

之前实现了JRT的打印客户端实现&#xff0c;这次实现JRT的导出Excel的客户端实现&#xff0c;这样这套框架就成为完全体了。还是一样的设计&#xff0c;不面向具体业务编程&#xff0c;我喜欢面向协议编程&#xff0c;导出一样定义了一套协议。 协议约定&#xff1a; 然后就是…

openEuler操作系统安装

所需要的软件镜像 https://repo.openeuler.org/openEuler-20.03-LTS/ISO/x86_64/ 选择openEuler-20.03-LTS-everything-x86_64-dvd.iso 版本的最完整 如果硬盘空间小可选择openEuler-20.03-LTS-x86_64-dvd.iso 安装步骤 1 选择第一个 install openEuler 20.03-LTS 2 选择语…

鸿蒙Harmony开发初探

一、背景 9月25日华为秋季全场景新品发布会&#xff0c;余承东宣布鸿蒙HarmonyOS NEXT蓄势待发&#xff0c;不再支持安卓应用。网易有道、同程旅行、美团、国航、阿里等公司先后宣布启动鸿蒙原生应用开发工作。 二、鸿蒙Next介绍 HarmonyOS是一款面向万物互联&#xff0c;全…

mysql原理--InnoDB记录结构

1.InnoDB行格式 我们平时是以记录为单位来向表中插入数据的&#xff0c;这些记录在磁盘上的存放方式也被称为 行格式 或者 记录格式 。 设计 InnoDB 存储引擎的大叔们到现在为止设计了4种不同类型的 行格式 &#xff0c;分别是 Compact 、 Redundant 、Dynamic 和 Compressed 行…

罗技鼠标使用接收器和电脑重新配对

罗技鼠标使用接收器和电脑重新配对 文章目录 罗技鼠标使用接收器和电脑重新配对1\. 前言2\. 安装软件3\. 进行配对3.1. 取消之前的配对3.2. 重新配对3.3 配对完成 4\. 报错4.1. 重新配对时显示配对未成功 1. 前言 罗技的鼠标出厂的时候&#xff0c;默认的是将通道一设置为接收…

『亚马逊云科技产品测评』活动征文|基于亚马逊EC2云服务器部署Gogs服务

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器&#xff08;Elastic Compute Cloud&#xff09;是亚马…

Redis穿透以及解决方法

Redis穿透是指当一个请求在缓存中和数据库都找不到对应的数据时&#xff0c;导致每次请求都要查询数据库&#xff0c;从而产生了大量的无效数据库查询&#xff0c;大量无效的数据库查询会导致数据库负载增加&#xff0c;降低数据库的性能和响应能力甚至宕机的风险。 这种情况通…

nodejs+vue+微信小程序+python+PHP天天网站书城管理系统的设计与实现-计算机毕业设计推荐

本项目主要分为前台模块与后台模块2个部分&#xff0c;详细描述如下&#xff1a;   &#xff08;1&#xff09;前台模块 首页: 首页可以起到导航的作用&#xff0c;用户想要了解网站 &#xff0c;网站首页为用户可以深入了解网站提供了一个平台&#xff0c;它就向一个“导游”…