微信小程序 实现拖拽事件监听实例详解


Posted in Javascript onNovember 16, 2016

微信小程序 拖拽监听功能:

        在软件开发或者 APP应用开发的时候,经常会遇到拖拽监听,最近自己学习微信小程序的知识,就想实现这样的拖拽效果,这里就记录下。

需要做个浮在scroll-view之上的button.尝试了一下.

上GIF:

微信小程序 实现拖拽事件监听实例详解

Android中也会有类似移动控件的操作.思路差不多.获取到位移的X Y 的变量,给控件设置坐标.

1.index.wxml

../images/gundong.png" bindtap="ballClickEvent" style="bottom:{{ballBottom}}px;right:{{ballRight}}px;" bindtouchmove="ballMoveEvent">  
</image>

简单的设置一张图片,添加触摸事件监听.点击事件监听.根据触摸事件获取X Y位移,设置为image的位置

2.index.js

//index.js 
//获取应用实例 
var app = getApp() 
Page({ 
 data: { 
  ballBottom: 240, 
  ballRight: 120, 
  screenHeight: 0, 
  screenWidth: 0, 
 }, 
 onLoad: function () { 
[javascript] view plain copy
<span style="white-space:pre"> </span>//获取屏幕宽高 
  var _this = this; 
  wx.getSystemInfo({ 
   success: function (res) { 
    _this.setData({ 
     screenHeight: res.windowHeight, 
     screenWidth: res.windowWidth, 
    }); 
   } 
  }); 
 }, 
 ballMoveEvent: function (e) { 
  console.log('我被拖动了....') 
  var touchs = e.touches[0]; 
  var pageX = touchs.pageX; 
  var pageY = touchs.pageY; 
  console.log('pageX: ' + pageX) 
  console.log('pageY: ' + pageY)
//防止坐标越界,view宽高的一般 
  if (pageX < 30) return; 
  if (pageX > this.data.screenWidth - 30) return; 
  if (this.data.screenHeight - pageY <= 30) return; 
  if (pageY <= 30) return;
//这里用right和bottom.所以需要将pageX pageY转换 
  var x = this.data.screenWidth - pageX - 30; 
  var y = this.data.screenHeight - pageY - 30; 
  console.log('x: ' + x) 
  console.log('y: ' + y) 
  this.setData({ 
   ballBottom: y, 
   ballRight: x 
  }); 
 },
//点击事件 
 ballClickEvent: function () { 
  console.log('点击了....') 
 } 
})

3.index.wxss

这里需要设置z-index

.image-style{ 
 position: absolute; 
 bottom: 240px; 
 right: 100px; 
 width: 60px; 
 height: 60px; 
 z-index: 100; 
}

Javascript 相关文章推荐
jquery ui dialog里调用datepicker的问题
Aug 06 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
Google 静态地图API实现代码
Nov 19 Javascript
jquery的ajax跨域请求原理和示例
May 08 Javascript
在JavaScript中重写jQuery对象的方法实例教程
Aug 25 Javascript
基于JavaScript创建动态Dom
Dec 08 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
May 26 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
vue下跨域设置的相关介绍
Aug 26 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
Jan 27 Javascript
js实现贪吃蛇游戏(简易版)
Sep 29 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
Nov 16 #Javascript
JavaScript仿微博发布信息案例
Nov 16 #Javascript
使用Node.js给图片加水印的方法
Nov 15 #Javascript
Node.js批量给图片加水印的方法
Nov 15 #Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 #Javascript
AngularJS extend用法详解及实例代码
Nov 15 #Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 #Javascript
You might like
PHP的FTP学习(三)
2006/10/09 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
php实现复制移动文件的方法
2015/07/29 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
PHP数组实例详解
2016/06/26 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
JavaScript实现短信倒计时60s
2017/10/09 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
python文件排序的方法总结
2020/09/13 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
日本小田急百货官网:Odakyu
2018/07/19 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
兴趣小组活动总结
2014/05/05 职场文书
小学社会实践活动总结
2014/07/03 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL