快应用之--模仿苹果手机屏幕的虚拟键,可以在手机上随意拖动

news/2024/12/1 9:32:09/

需求:多入口需悬挂在页面中,用户可以随意拖动,方便在页面上的多操作,如下图

 

思路:按钮拖动分为三步骤,拖动开始(ontouchstart)、拖动中(ontouchmove)、拖动结束(ontouchend)

在拖动开始,获取当前横纵坐标点位置,判断当前位置点距离屏幕左右位置获取相对屏幕的相对定位left、top,动态改变实现按钮拖动效果

1、按钮元素绑定ontouchstart、ontouchmove、ontouchend三个事件,相对定位left、top


<imagesrc="XX"style="left: {{menuStyle.left+'px'}}; top:{{menuStyle.top+'px'}}"ontouchstart="menuTouchStart"ontouchmove="menuTouchMove"ontouchend="menuTouchEnd"
></image>export default{   return(){       menuStyle:{ left: 880, //菜单绝定定位顶部位置
top: 1030, //菜单绝定定位左侧位置 disX: 0, disY: 0 }, beginDrag: false    } }

2、事件

(1)ontouchstart 拖动开始事件,获取距离事件触发对象左边沿 X 、Y轴的距离

menuTouchStart(event){this.beginDrag = true;this.menuStyle.disX = event.touches[0].offsetX;this.menuStyle.disY = event.touches[0].offsetY;
}

 (2) ontouchmove 拖动中事件,在获取到坐标点按钮会跑出屏幕外,需要加判断,判断按钮左高距离屏幕位置,为了兼容安卓有的手机屏幕可视高度、宽度,当触摸坐标大于屏幕的可使用窗口宽、高时,屏幕可视宽高为可使用窗口/设备的屏幕密度。通过可见区域左边沿的 X、Y 轴坐标减去距离事件触发对象左边沿 X 、Y轴的距离得到按钮相对屏幕左、高位移。

menuTouchMove(event){if(this.beginDrag){event.stopPropagation()let resetDeviceScreenWidth = event.touches[0].clientX > this.device.windowWidth ? ((this.device.windowWidth / this.device.screenDensity) * 3) : this.device.windowWidth;let resetDeviceScreenHeight = event.touches[0].clientY > this.device.windowHeight ? ((this.device.windowHeight / this.device.screenDensity) * 3) : this.device.windowHeight;let menuStyleLeft = event.touches[0].clientX - this.menuStyle.disX;let menuStyleTop = event.touches[0].clientY - this.menuStyle.disY;this.menuStyle.left = menuStyleLeft > 0 ?(menuStyleLeft > (resetDeviceScreenWidth - 204) ? resetDeviceScreenWidth - 204 : menuStyleLeft) : 0 ;this.menuStyle.top = menuStyleTop > 0 ?(menuStyleTop > (resetDeviceScreenHeight - 204) ? resetDeviceScreenHeight - 204 : menuStyleTop) : 0 ;}
}

(3)ontouchend 拖动结束事件,重置数据

 menuTouchEnd(){this.beginDrag = false;this.menuStyle.disX = this.menuStyle.disY = 0;}

 


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

相关文章

Qt 之 自定义按钮 在鼠标 悬浮、按下、松开后的效果

Qt技术学习班开始了&#xff0c;更多精彩、好玩的内容等着你&#xff0c;赶紧报名吧! 群号&#xff1a;655815739 #一、简述 在上一篇 Qt 之 去除窗口部件被选中后的焦点虚线框 中&#xff0c;我们为了去除焦点虚线框&#xff0c;给按钮的样式加上了如下的样式。 QPushButton…

微信小程序之可拖动悬浮按钮的实现

微信小程序之可拖动悬浮按钮的实现 什么都不说先看效果图 下面上代码 wxml <button catchtouchmove"buttonMove" catchtouchstart"buttonStart" catchtouchend"buttonEnd" style"top:{{buttonTop}}px;left:{{buttonLeft}}px;width: 5…

vue 实现 浮动图标 仿iphone悬浮球

同级目录引用组件 ./ 上一级目录&#xff0c;两个点 …/ 原文应用案例 <!-- 给定一个初始位置position&#xff0c;插槽中填写想滑动的部分 --> <xuanfuqiu :position"position"><d-add-button click"addPigFarm" add-item"猪场&quo…

html给列表中每一行设置背景,教程丨如何设置内容的背景

原标题:教程丨如何设置内容的背景 秀米收到的投稿中,有好多非常会利用背景设计版面的文章,而他们也只是用了一张适合的图片设置成背景图,搭配文字内容,在阅读过程中视觉效果就会更立体,也就会觉得眼前一亮! 为能让更多小伙伴会利用布局制作背景,在本期教程中,我们将再…

【移动端网页布局】流式布局案例 ⑤ ( 连续排列的链接图片 | 设置盒子圆角 | 超出部分隐藏 | 设置浮动布局 | 精确计算浮动元素宽度避免换行 | 设置图片宽度自适应 )

文章目录 一、连续排列的链接图片样式及核心要点1、实现效果2、标签结构设置3、设置圆角和超过部分隐藏4、设置浮动并精确计算宽度5、设置图片宽度自适应 二、完整代码实例1、HTML 标签结构2、CSS 样式设置3、展示效果 一、连续排列的链接图片样式及核心要点 1、实现效果 实现如…

安卓仿苹果音量调节_Android 模仿苹果虚拟悬浮按钮(自动靠边、可浮现任何界面上)...

public classFloatViewService extends Service {private static final String TAG "FloatViewService";//定义浮动窗口布局 privateLinearLayout mFloatLayout;privateWindowManager.LayoutParams wmParams;//创建浮动窗口设置布局参数的对象 privateWindowManager…

Android仿苹果siri浮动控件

实现原理是用WindowManager添加视图&#xff0c;生命周期可以不跟随某一页面或某一应用&#xff0c;可以全屏浮动&#xff08;状态栏除外&#xff09;。只有一个主类FloatView。在应用中new一下就可以显示了。 需要添加权限&#xff1a;<uses-permission android:name"…

浮动按钮、扇形按钮、EasyThouch

1、本章博客主要实现几个不同类型的浮动框。第一种&#xff1a;EasyThouch (苹果的小白点)&#xff1a;功能近是苹果。第二种&#xff1a;是一种不可移动的浮动按钮&#xff0c;就一个单一的点击事件。第三&#xff1a;是扇形按钮浮动。这是公司App里面使用到三个情况&#xff…