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

这篇具有很好参考价值的文章主要介绍了uniapp多行文本展开或收起(兼容h5、微信小程序,其它未测试)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、效果图展示

1、收起

uniapp 展开查看更多,uniapp学习及经验,uni-app,微信小程序

2、展开

uniapp 展开查看更多,uniapp学习及经验,uni-app,微信小程序

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

uniapp 展开查看更多,uniapp学习及经验,uni-app,微信小程序文章来源地址https://www.toymoban.com/news/detail-783349.html

二、代码实现

原理:判断文本是否过短

  • 文本过短时隐藏按钮,需要知道文本全部展示的行数
  • 文本收起时,微信小程序不能直接获取文本展示的高度
  • 文本展示时,微信小程序不能直接获取文本收起的高度
  • 所以使用占位文本获取单行文本高度,最终通过计算得到文本全部展示时的行数
  • 本文介绍的方法兼容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
},

到了这里,关于uniapp多行文本展开或收起(兼容h5、微信小程序,其它未测试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序---缓慢展开和收起效果(不需要wx:if控制实现)

    效果一: 点击中间问题,在中间缓慢展开 ,将下面往下撑开,点击再次收起效果 效果二: 点击添加商品,缓慢向下展开,点击收起,缓慢将下面收起效果 1、实现的原理: 通过height高度来控制展开或收起,当不需要展示时,高度为0,超过的部分用overflow: hidden;来隐藏,可

    2024年02月17日
    浏览(55)
  • Uniapp 中,能够同时兼容H5、web、app、微信小程序的引入高德地图的语法格式

    在 Uniapp 中,可以通过使用 uni-app 统一的 API 来同时兼容 H5、web、App 和微信小程序,而引入高德地图则有以下两种语法格式供选择: 使用 Vue.js 的语法格式: 使用原生 JavaScript 的语法格式: 需要注意的是,这两种语法格式都需要在页面组件的 JavaScript 文件中引入相应的 API 文

    2024年02月05日
    浏览(54)
  • uniapp音频播放组件,兼容微信小程序、h5等,可倍数播放,快进快退,切换上下音频等

    template   !--父组件--   view     cxAdudioPlay       :list=\\\"list\\\"       :BsNav=\\\"BsNav\\\"       :autoplays=\\\"true\\\"       :slideYes=\\\"true\\\"       :autoNext=\\\"true\\\"       :switAud=\\\"true\\\"     /cxAdudioPlay   /view /template script /*      list      --   音频文件传入 不传无法播放/数组形式      Faskms    --   快进

    2024年02月03日
    浏览(79)
  • iOS 结合YYLabel实现文本的展开和收起

    项目需要实现文本过多的时候最多展示五行,其余的折叠。点击可展开,再次点击可收起。 效果如下: 这是在UITableView的Cell里实现的,需要自适应高度。 一开始自定义了一个UIView直接追加到需要添加展开的最后一行的最后位置,覆盖了展示的内容。实现的并不完美。效果如

    2024年02月16日
    浏览(42)
  • uniapp实现支付宝菜单展开与收起

    需求实现支付宝类似的效果:  思路:         1.首先建立展开收起按钮,这里使用的是uview里面的icon图标。         2.其次建立展开菜单内容,这里只演示了文本信息,后期引入首页应用。         3.最后写js逻辑,展开收起时改变盒子高度和icon。 代码: 1.视图层 2.逻辑层

    2024年02月13日
    浏览(42)
  • TextClamp for Vue3.0(Vue3.0的文本展开收起组件)

    呦!大家好,好久没有更新博客了,最近实现了一个一直想自己完成的一个东西,就是文本的展开收起组件,以前项目需要用到,自己实现一个又太繁琐,所以那个时候都是用的别人的轮子,现在自己尝试了一下,居然实现了,所以在这里向各位分享一下。(郑重声明,实现

    2024年02月15日
    浏览(43)
  • uniapp(全端兼容) - 实现点击输入框时完美顶起键盘,获取键盘高度动态计算顶起距离,解决软键盘弹出时输入框被覆盖问题,uniapp微信小程序/移动端h5网页/安卓苹果app(示例代码,一键复制

    在uniapp小程序/h5网页网站/安卓苹果app/nvue等(全平台完美兼容)开发中,完美解决input输入框激活时软键盘从底部弹出遮挡问题,采用获取键盘高度动态计算每个平台下的弹出高度,彻底消除各平台端的弹出距离不一致、有差异的问题! 还能彻底解决软键盘顶不起来输入框的

    2024年03月14日
    浏览(167)
  • 微信小程序、h5兼容性问题(1)

    1. 微信小程序中border-image 设置渐变 导致border-radius 不生效。 不建议两者同时使用,实测ipone12 不兼容, ipone 12以上正常显示。可以使用背景图片代替。 2. h5 使用原生table tr、th、td封装表格,在ios 中样式失效 建议使用dev 整体布局。 3. 企业微信群二维码插件materialPlugin、cell

    2023年04月09日
    浏览(58)
  • uniapp collapse动态生成多个折叠面板手动展开收起(包括uni-ui版)

    官方文档没有暴露出相关api,那就看看组件源码。 以下示例均通过  vue-cli  创建的  uni-app  h5 项目 源码 node_modulesuview-uicomponentsu-collapse-itemu-collapse-item.vue 这个方法是用来改变折叠面板子组件收起还是展开的,根据改变 isShow 的值来实现 方法 源码 node_modules@dcloudiouni-ui

    2024年02月06日
    浏览(64)
  • uniapp图片或文件的预览和下载,兼容ios+安卓+浏览器+企业微信H5

    在uniapp的APP日常开发中,我们时常遇到一些兼容性问题,正如本文所提到的图片的预览和下载。在此功能的开发中,我常遇到以下四个问题: 图片预览功能实现,但是PDF,word,xls文件无法打开。 安卓的图片预览和文件查看功能正常,ios系统的手机却问题频出,时不时的无法打

    2023年04月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包