小程序js通过判断DOM元素节点位置来自动显示“更多”按钮

news/2024/11/17 12:50:28/

Sham最近因为在做一个食堂订餐功能,因为订单中内容比较多,又不想初始状态全部展示,希望类似文字过长显示省略号那样,在最后显示一个“more”按钮。

实现方法和代码如下,记录备忘

JS部分

data: {showmorebtn:{}//这里初始化,用户后面往这个对象中添加对应id的判断用数据},
//主要用于循环并赋值checkheight(that){var that = this;var items = that.data.mealorders;//获取mealorder数据数组,循环执行是否超高并显示more按钮for(var i=0; i<items.length;i++){that.checkoverflow(that,i);}},//超高时显示more按钮checkoverflow(that,id){var query = wx.createSelectorQuery();//创建节点查询器//获取父对象id的位置信息,生成后会是在res数组的第一个query.select('#f'+id).boundingClientRect();//获取子对象id的位置信息,res数组第二个数据query.select('#c'+id).boundingClientRect();//如果上面再继续加,则会依次为res数组的第三……个数据//生成位置信息数组query.exec(function(res) {//res就是 所有标签为对应id的元素的信息 的数组//console.log(res);//这里的showmorebtn在js的初始data里设置 showmorebtn :{}var showmorebtn = that.data.showmorebtn;if(res[1].height > res[0].height+10){//当子对象高度超过父对象高度时,表示内容太多了,需要显示more按钮,渲染数据用于前端判断showmorebtn[id] = true;that.setData({showmorebtn:showmorebtn})}})},

wxml部分

<!--这里的用index+1是因为发现直接用index的话,如果index为0时,会被判断为false-->
<view class="details {{showdetail == index+1 ? '' : 'h55'}}" id="f{{index}}"><view id="c{{index}}"><view class="foods" wx:for="{{item.orderdetail}}" wx:key="index" wx:for-item="foods">{{index}}:{{foods.number}}份</view></view></view><view class="showdetail white" id="{{index+1}}" bindtap="showdetail" wx:if="{{showmorebtn[index]}}"><view class="bgblue center"><text>more</text></view></view>

最后是WXSS部分,其他没什么,就一个h55,其他的样式不影响


.h55{height:55rpx;overflow: hidden;transition: all 0.4s ease-out 0s;-webkit-transition: all .4s ease-out;-moz-transition: all .4s ease-out;
}

一个在前往码农道路上走走停停的行政文员


http://www.ppmy.cn/news/155348.html

相关文章

joa运行oracle,蚂蚁金服自研数据库OceanBase登顶全球第一,打破Oracle维持九年的世界纪录...

蚂蚁金服自研数据库OceanBase登顶全球第一&#xff0c;打破Oracle维持九年的世界纪录 2019年10月25日来源:新智元 DQoJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3Nucy5xem9uZS5xcS5jb20vY2dpLWJpbi9xenNoYXJlL2NnaV9xenNoYXJlX29uZWtleT91cmw9aHR0cHM6Ly93d3cueGlhbmppY2hpbmEuY29tL3NwZW…

计算机开机滴滴叫8声,电脑无法开机!伴随8声的滴滴声! 三秒之后重复!

DELL编辑 1短-系统运行 1-内存刷新电路故障表明问题与主板关尝试重新插拔DIMM或SIMM内存您另外添加条内存请确保该内存工作速率与系统速率相同 12短 -视频适配器故障或者显存读、写错误尝试重新拔插显卡测试使用PCI显卡尝试更换插槽测试 13短-系统没检测显示器确认显示器数…

网页html5游戏修改器,正版H5游戏无限物品

今天发一个H5游戏的无限物品,本来不想发的我自己有在瞎玩玩。但是独乐乐不如众乐乐 说的有点多了下面进入正文 准备工具: (WPE) (微信电脑版) 花了一个多小时的时间吧小白也能看懂 操作步骤: 红色太醒目换成黑色的了 我的教程只要是按我的步骤做我想小白也是没有压力的 游戏名…

每日FPGA学习总结

FPGA学习基础知识每日总结 每日总结 前言一、BCD8421码是什么&#xff1f;二、过程1.将十进制数转换成8421码 三、总结 前言 通过对每天工作的总结保证自己可以每天都有输出&#xff0c;既分享了知识&#xff0c;也加固自己的知识&#xff0c;最终的目的是自己可以建立一个知…

h5倒计时弹窗_js+html5实现页面可刷新的倒计时效果

写了一个5分钟倒计时的代码&#xff0c;有的时候代码需要刷新&#xff0c;然后倒计时又从4&#xff1a;59开始了&#xff0c;我想到的一个解决办法&#xff0c;就是使用缓存&#xff0c;将开始倒计时的时间加上要倒计时的5分钟设为缓存&#xff0c;然后直接用这个缓存时间减去当…

老式计算机如何设置u盘启动,技嘉主板老式bios设置u盘启动教程

想用U盘装系统&#xff0c;进BIOS是一个难关&#xff0c;今天快启动小编就以技嘉主板老式BIOS设置U盘启动的例子&#xff0c;教大家怎么在BIOS中设置U盘启动。 技嘉主板老式bios设置u盘启动&#xff1a; 1、开机长按键盘上的Delete键进入BIOS主界面&#xff0c;选择第二项Advan…

前端新手 Vue应用部署到服务器的正确方式

作者简介&#xff1a; 陈老师 5年多前端工作经验&#xff0c; 主要分享&#xff1a;vue.js,等前端技术&#xff0c;微信开发 公众号&#xff1a;H5前端开发社区 掘金专栏&#xff1a;https://juejin.im/user/5901d6210ce463006153c6cc 页面出现空白现象&#xff0c;获取资源路径…

以太网通信(1)UDP —— 数据发送

目录 一、以太网通信简介 1.OSI七层模型 2.以太网数据包解析 3.IP首部校验和计算与检验 二、以太网通信实例 1.整体实验框图 2.发送部分时序图 3.实验代码及仿真结果 总结 一、以太网通信简介 前文我们讲述了多种通信协议&#xff08;串口、IIC、SPI等协议&#xff09…