微信小程序实现拖拽盒子效果

ops/2025/1/16 10:44:40/

要实现一个当前盒子高度由里面的盒子进行支配高度拖拽的效果

// wxml<view class="exmation-item" wx:elif="{{type==4}}">
<view class="exmation-item-drag-box"  id="drag-box"> <!-- 内容 --><view class="exmation-item-main"  style="height: {{topHeight}}px; "></view><!-- 拖动    --><view class="exmation-item-box"   style="height: {{bottomHeight}}px;" >
<view class="exmation-item-box-top"   
bindtouchstart="onTouchStart" 
bindtouchmove="onTouchMove" 
bindtouchend="onTouchEnd" > 
</view></view></view></view>

less

  .exmation-item-drag-box {height: calc(100vh - 90rpx - 88rpx - constant(safe-area-inset-bottom));height: calc(100vh - 90rpx - 88rpx -  env(safe-area-inset-bottom));overflow: hidden;.exmation-item-main{overflow-y: auto;height: 50%;margin-bottom: 0;}.exmation-item-box{height: 50%;background: #fff;.exmation-item-box-top{height: 100rpx;background: #000;}}}

js

// pages/exmation/index.js
Page({/*** 页面的初始数据*/data: {totalHeight: 0, // 大盒子的总高度(可根据需要调整)topHeight: 0, // 上面盒子的初始高度bottomHeight: 0, startY: 0, // 触摸开始时的Y坐标dragging: false, // 是否正在拖动},// 获取当前页面的高度getHeight() {const query = wx.createSelectorQuery();query.select('#drag-box').boundingClientRect( (rect) =>{// rect.height 就是盒子的高度console.log(rect.height );// 你可以将高度设置到data中以便后续使用this.setData({ totalHeight: rect.height,topHeight:rect.height/2,bottomHeight:rect.height/2});}).exec();},// 拖拽方法onTouchStart(e) {this.setData({startY: e.touches[0].clientY,dragging: true,});},onTouchMove(e) {if (!this.data.dragging) return;const moveY = e.touches[0].clientY;const deltaY = moveY - this.data.startY;let minheight = 50;let height=this.data.bottomHeight - deltaY;if(height>this.data.totalHeight)return;let newBottomHeight = (height < minheight ? minheight : height) const newTopHeight = this.data.totalHeight - newBottomHeight;this.setData({startY: moveY,topHeight: newTopHeight>0?newTopHeight:0,bottomHeight: newBottomHeight>0?newBottomHeight:0,});},onTouchEnd() {this.setData({dragging: false,});},/*** 生命周期函数--监听页面加载*/onLoad(options) {this.getHeight()},})

http://www.ppmy.cn/ops/149983.html

相关文章

RabbitMQ故障全解析:消费、消息及日常报错处理与集群修复

文章目录 前言&#xff1a;1 消费慢2 消息丢失3 消息重复消费4 日常报错及解决4.1 报错“error in config file “/etc/rabbitmq/rabbitmq.config” (none): no ending found”4.2 生产者发送消息报错4.3 浏览器打开IP地址&#xff0c;无法访问 RabbitMQ&#xff08;白屏没有结…

【数据仓库】— 5分钟浅谈数据仓库(适合新手)从理论到实践

大家好&#xff0c;我是摇光~ 对于刚进入大数据领域的萌新&#xff0c;且想要在数据分析岗、数据运维岗、数据工程师这些岗位立足&#xff0c;了解数据仓库是必要的&#xff0c;接下来我尽量用通俗易懂的语言让大家了解到数据仓库。 在当今大数据盛行的时代&#xff0c;数据仓…

个人介绍以及未来的规划

1.自我介绍 很高兴&#xff0c;有这样的一个机会可以向你介绍一下我自己&#xff0c;本人目前是一位211院校的大一新生。爱好打fps和羽毛球。好了&#xff0c;好像也没啥说的了哈哈哈。 2.编程目标 学习编程&#xff0c;对我来说是为了让自己安心的玩&#xff08;劳逸结合&a…

Go语言Zero框架中实现在线签名与验签功能设计与实现

在GoZero框架中实现在线签名与验签功能&#xff0c;需要使用在线提供的API以及GoZero的服务框架进行集成。在线提供了一些接口用于数字签名和验签操作&#xff0c;具体操作步骤和代码设计可以参考以下内容。 ### 1. 设计概述 在线提供了基于数字证书的签名与验签服务。整个流…

面经学习-操作系统-上下文切换

文章目录 上下文切换上下文切换简介为什么有上下文&#xff1f;用户态到内核态的切换1. 系统调用2. 异常处理3. 硬件中断 上下文切换时包含的信息进程上下文与模式切换模式切换硬件中断与中断上下文 注意事项线程上下文切换例子说明&#xff1a;示例输出&#xff1a; 上下文简单…

windows 挂载本地目录到vmware 的centos

windows 挂载本地目录到vmware 的centos&#xff1b;windows设置目录为共享&#xff0c;担心局域网的电脑能用到该目录; 在虚拟机操作 # 创建目录 mkdir /mydir/mnt# 安装挂载程序 yum install open-vm-tools-devel -y执行挂载/usr/bin/vmhgfs-fuse .host:/ /mydir/mnt-o al…

【ArcGIS初学】产生随机点计算混淆矩阵

混淆矩阵&#xff1a;用于比较分类结果和地表真实信息 总体精度(overall accuracy) :指对角线上所有样本的像元数(正确分类的像元数)除以所有像元数。 生产者精度(producers accuracy) &#xff1a;某类中正确分类的像元数除以参考数据中该类的像元数(列方向)&#xff0c;又称…

【Linux】深刻理解软硬链接

一.软硬链接操作 1.软连接 touch 创建一个文件file.txt &#xff0c;对该文件创建对应的软链接改怎么做呢&#xff1f; ln -s file.txt file-soft.link .给对应文件创建软连接。 软连接本质就是一个独立的文件&#xff0c;因为我们对应的软连接有独立的inode&#xff0c;他…