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

文章目录

  • 一、效果图展示
    • 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
},

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】安装 vue-router 库报错 npm ERR! ERESOLVE unable to resolve dependency tree

问题描述 运行npm install vue-router&#xff0c;安装vue-router库&#xff0c;npm报错。 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: my-project0.1.0 npm ERR! Found: vue2.7.15 npm ERR! node_mod…

linux的权限741

741权限 在 Linux 中&#xff0c;文件和目录的权限由三组权限来定义&#xff0c;分别是所有者&#xff08;Owner&#xff09;、所属组&#xff08;Group&#xff09;和其他用户&#xff08;Others&#xff09;。每一组权限又分为读&#xff08;Read&#xff09;、写&#xff0…

Ubuntu18.04 本地安装CVAT标注工具

写在前面&#xff1a; 1、如果直接clone最新版本的cvat&#xff0c;python版本最好安装3.8的&#xff0c;因为其中部分代码的语法只有高版本的python才可以支持。 2、安装完成以后本地登陆可能出现"cannot connect to cvat server"的错误&#xff0c;可以从Cannot …

FluxMQ—2.0.8版本更新内容

FluxMQ—2.0.8版本更新内容 前言 FLuxMQ是一款基于java开发&#xff0c;支持无限设备连接的云原生分布式物联网接入平台。FluxMQ基于Netty开发&#xff0c;底层采用Reactor3反应堆模型&#xff0c;具备低延迟&#xff0c;高吞吐量&#xff0c;千万、亿级别设备连接&#xff1…

C语言 - 字符函数和字符串函数

系列文章目录 文章目录 系列文章目录前言1. 字符分类函数islower 是能够判断参数部分的 c 是否是⼩写字⺟的。 通过返回值来说明是否是⼩写字⺟&#xff0c;如果是⼩写字⺟就返回⾮0的整数&#xff0c;如果不是⼩写字⺟&#xff0c;则返回0。 2. 字符转换函数3. strlen的使⽤和…

css单行/多行 超出部分多行文本溢出隐藏

单行文本溢出 <div class"box"><div class"text">aaaaaaaaaaaaaaaaaaaaaaaaaaaa</div> </div>.box {width: 100px;height: 50px;background-color: pink;.text {/* 文本溢出 */white-space: nowrap;/* 不换行 溢出隐藏 */overflow…

leetcode:1422. 分割字符串的最大得分(python3解法)

难度&#xff1a;简单 给你一个由若干 0 和 1 组成的字符串 s &#xff0c;请你计算并返回将该字符串分割成两个 非空 子字符串&#xff08;即 左 子字符串和 右 子字符串&#xff09;所能获得的最大得分。 「分割字符串的得分」为 左 子字符串中 0 的数量加上 右 子字符串中 1…

MacPro外接显示器使用hidpi

前几年因为工作的原因&#xff0c;公司给配了MacPro&#xff0c;用了几年发现确实比Windows好用。唯一不爽的就是13寸的屏幕感觉有点小&#xff0c;所以最近就买了一个准4K的32寸带鱼屏显示器。接上之后发现总感觉怪怪的&#xff0c;字体有点发虚的感觉。搜了半天&#xff0c;发…

【EI征稿中#先投稿,先送审#】第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)

第三届网络安全、人工智能与数字经济国际学术会议&#xff08;CSAIDE 2024&#xff09; 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 第二届网络安全、人工智能与数字经济国际学术会议&#xff08;CSAIDE 2023&…

黑豹程序员-java发邮件,发送内容支持html,带多附件的案例

介绍 发邮件mail是常见的软件功能&#xff0c;下面利于spring和java的mail库实现发送内容支持html&#xff0c;带多附件的案例 开启SMTP邮件发送协议 谁提供的SMTP邮件服务&#xff0c;就找谁开启。QQ邮箱类似。 依赖 <!--Java MAil 发送邮件API--><dependency&g…

GSLB是什么?谈谈对该技术的一点理解

GSLB是什么&#xff1f;它又称为全局负载均衡&#xff0c;是主流的负载均衡类型之一。众所周知&#xff0c;负载均衡位于服务器的前面&#xff0c;负责将客户端请求路由到所有能够满足这些请求的服务器&#xff0c;同时最大限度地提高速度和资源利用率&#xff0c;并确保无任何…

在KeyarchOS上体验WildFly

一、浪潮信息KeyarchOS简单介绍 KeyarchOS具备稳定可靠、高效软硬协同、全天候运维、安全可信等特性,增强了对云计算、人工智能等场景的支持,性能稳定性领先,生态完善,符合金融、政务、能源、交通、通信、教育、医疗等关键行业的应用要求。具备非常广泛的应用。 官方地址&…

Landsat 5 C02数据集2007-2011年

Landsat 5是美国陆地卫星系列&#xff08;Landsat&#xff09;的第五颗卫星&#xff0c;于1984年3月1日发射&#xff0c;2011年11月停止工作。16天可覆盖全球范围一次。Landsat5_C2_TOA数据集是由Collection2 level1数据通过MTL文件计算得到的TOA反射率产品。数据集的空间分辨率…

失落的艺术:无着色器3D渲染

假设你想创建一个甜蜜的弹跳立方体&#xff0c;如下所示&#xff1a; 一个弹跳的立方体 你可以使用 3D 框架&#xff0c;例如 OpenGL 或 Metal。 这涉及编写一个或多个顶点着色器来变换 3D 对象&#xff0c;以及编写一个或多个片段着色器来在屏幕上绘制这些变换后的对象。 然…

Spatial Data Analysis(三):点模式分析

Spatial Data Analysis&#xff08;三&#xff09;&#xff1a;点模式分析 ---- 1853年伦敦霍乱爆发 在此示例中&#xff0c;我将演示如何使用 John Snow 博士的经典霍乱地图在 Python 中执行 KDE 分析和距离函数。 感谢 Robin Wilson 将所有数据数字化并将其转换为友好的 G…

把 Windows 11 装进移动硬盘:Windows 11 To Go

本篇文章聊聊如何制作一个可以“说带走就带走”的 Windows 操作系统&#xff0c;将 Windows11 做成能够放在 U 盘或者移动硬盘里的 WinToGo “绿色软件”。 写在前面 在《开源的全能维护 U 盘工具&#xff1a;Ventoy》这篇文章的最后&#xff0c;我提到了一个关键词 “WinToG…

Hadoop高可用(主备切换)---配合Zookeeper

1. Hadoop高可用(Hadoop High Availability)概述 HA(High Available), 高可用&#xff0c;是保证业务连续性的有效解决方案&#xff0c;一般有两个或两个以上的节点&#xff0c;分为活动节点&#xff08;Active&#xff09;及备用节点&#xff08;Standby&#xff09;。通常把…

sizeof()、strlen()、length()、size()的区别(笔记)

​ 上面的笔记有点简陋&#xff0c;可以看一下下面这个博主的&#xff1a; c/c中sizeof()、strlen()、length()、size()详解和区别_csize,sizeof,length_xuechanba的博客-CSDN博客

AI 绘画 | Stable Diffusion LCM和FP8 显存不足的福音

前言 在我们使用Stable Diffusion 作画的时候,普通用户因为电脑显存配置过低,经常会出现爆显存和出图慢的困扰。而SD-WebUI在显存优化方便不如ComfyUI和Fooocus,但是也有一些弥补SD-WebUI显存问题的方案,那就是LCM和FP8。 LCM 教程 简介 LCM 是一个用于 Stable Diffusio…

智能优化算法应用:基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.瞬态优化算法4.实验参数设定5.算法结果6.参考…