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


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 相关文章推荐
jQuery html()等方法介绍
Nov 18 Javascript
关于 文本框默认值 的操作js代码
Jan 12 Javascript
JS中获取数据库中的值的方法
Jul 14 Javascript
深入分析JQuery和JavaScript的异同
Oct 23 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
微信小程序 wxapp导航 navigator详解
Oct 31 Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 Javascript
angular2中Http请求原理与用法详解
Jan 11 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 Javascript
vue-model实现简易计算器
Aug 17 Javascript
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
Apr 09 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
PHP多线程抓取网页实现代码
2010/07/22 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
中专毕业生求职简历的自我评价
2013/10/21 职场文书
应届生会计求职信
2013/11/11 职场文书
运动会邀请函范文
2014/01/31 职场文书
便利店促销方案
2014/02/20 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
中国好声音华少广告词
2014/03/17 职场文书
小组口号霸气押韵
2015/12/24 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书