微信小程序实现可长按移动控件


Posted in Javascript onNovember 01, 2020

微信小程序可长按移动控件,供大家参考,具体内容如下

?包含超出边界监测,性能不够理想【原因:setData在毫秒级刷新时会极大程度影响渲染性能】

Javascript

Page({
 /**
 * 页面的初始数据
 */
 data: {
 //浮动按钮坐标
 flow_y: 130,
 flow_x: 20,

 pre_y:0,
 pre_x:0,
 //标记移动
 moveFlag: false,
 //标记控件是否可放置
 canNotPlace: false,
 imgSrc:"",
 },


 //长按按钮移动控件
 longPress: function (e) {
 console.log(e)
 this.setData({
 moveFlag: true,
 pre_x:e.touches[0].clientX,
 pre_y:e.touches[0].clientY,
 })
 // console.log(e)
 console.log("begin:(", this.data.flow_x, this.data.flow_y, ")")
 // this.setData({
 // flow_x: 1334-e.touches[0].pageX, // 获取触摸时的原点
 // flow_y: 750-e.touches[0].pageY,
 // })
 //console.log(startX)

 },

 // 触摸结束事件
 touchEnd: function (e) {
 this.setData({
 moveFlag: false
 })

 // console.log("flow:(", this.data.flow_x, this.data.flow_y, ")")
 //监测按钮放置区域
 if (!((this.data.flow_x < 730) && (this.data.flow_x > 20))&&((this.data.flow_y < 1150) && (this.data.flow_y > 130))) {
 this.setData({
 flow_x: 20, // 转换rpx
 flow_y: 130,
 })
 }
 // this.setData({
 // flow_x: 20, // 转换rpx
 // })
 },

 touchMove: function (e) {
 //根据move差值动态布局
 if (this.data.moveFlag) {
 // console.log("page:(", e.touches[0].pageX, e.touches[0].pageY, ")")
 // console.log(move_x,move_y)

 var x =this.data.flow_x -(e.touches[0].clientX-this.data.pre_x)*2
 var y =this.data.flow_y -(e.touches[0].clientY-this.data.pre_y)*2
 this.setData({
 flow_x: x, // 转换rpx
 flow_y: y,
 })
 // console.log(x,y)
 // this.setData({
 // flow_x: x, // 转换rpx
 // flow_y: y,
 // })
 if (!(((x < 730) && (x > 20))&&((y < 1000) && (y > 130)))) {
 this.setData({
  canNotPlace: true,
 })
 } else {
 this.setData({
  canNotPlace: false,
 })
 }
 this.setData({
 pre_x:e.touches[0].clientX,
 pre_y:e.touches[0].clientY,
 })
 }
 },


 catchtouchmove: function () {
 //防止蒙层触摸穿透
 },



 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {

 },

 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function () {
 wx.hideLoading()
 },

 /**
 * 生命周期函数--监听页面显示
 */
 onShow: function () {

 },

 /**
 * 生命周期函数--监听页面隐藏
 */
 onHide: function () {

 },

 /**
 * 生命周期函数--监听页面卸载
 */
 onUnload: function () {

 },

 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function () {
 this.getArticle()
 },

 /**
 * 页面上拉触底事件的处理函数
 */
 onReachBottom: function () {

 },

 /**
 * 用户点击右上角分享
 */
 onShareAppMessage: function () {

 }
})

WXSS

.follow_icon{
 position: fixed;
 /* margin: 0 10rpx; */
 width:70rpx;
 height:70rpx;
 bottom: var(--flow_y--);
 right: var(--flow_x--);
 z-index: 1001;
}

/*mask*/
.drawer_screen {
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 left: 0;
 z-index: 5;
 background: #000;
 opacity: 0.5;
 overflow: hidden;
}

WXML

<!-- 刷新按钮 -->
<!-- <view bindtap='getArticle' style="opacity:0.8"> -->
<view catchtouchmove="catchtouchmove" ><image bindtap='getArticle' bindlongpress="longPress" bindtouchmove='touchMove' bindtouchend="touchEnd" style="--flow_y--:{{flow_y}}rpx;--flow_x--:{{flow_x}}rpx;" class="follow_icon" src="{{imgSrc}}"></image></view>

<!-- 蒙版屏蔽,防止触控穿透 -->
<view style="{{!canNotPlace?'background: #777;':'background: #b81e1e;'}}" catchtouchmove="catchtouchmove" class="drawer_screen" data-statu="open" wx:if="{{moveFlag}}"></view> 
<!-- </view> -->

微信小程序实现可长按移动控件

微信小程序实现可长按移动控件

微信小程序实现可长按移动控件

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js Map List 遍历使用示例
Jul 10 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
jquery+css3实现会动的小圆圈效果
Jan 27 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
Sep 04 Javascript
JS排序之快速排序详解
Apr 08 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
vue之组件内监控$store中定义变量的变化详解
Nov 08 Javascript
JS插入排序简单理解与实现方法分析
Nov 25 Javascript
Vue时间轴 vue-light-timeline的用法说明
Oct 29 #Javascript
antd日期选择器禁止选择当天之前的时间操作
Oct 29 #Javascript
vue制作toast组件npm包示例代码
Oct 29 #Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
Oct 29 #Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
Oct 29 #Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
Oct 29 #Javascript
解决ant Design中Select设置initialValue时的大坑
Oct 29 #Javascript
You might like
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
Python中使用partial改变方法默认参数实例
2015/04/28 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python用for循环求和的方法总结
2019/07/08 Python
python3 map函数和filter函数详解
2019/08/26 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python的json包位置及用法总结
2020/06/21 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
物业门卫岗位职责
2013/12/28 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
七年级地理教学计划
2015/01/22 职场文书
湘江北去观后感
2015/06/15 职场文书
2015入党个人自传范文
2015/06/26 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers