首页 > 其他分享 >H5 页面拖动悬浮按钮

H5 页面拖动悬浮按钮

时间:2023-09-23 10:00:36浏览次数:71  
标签:clientX 拖动 refs refName element let coordinate H5 页面

  <div class="main-plus" :style="{ bottom: (clientHeight * 5/100) + '%'}" ref="dragBox" @click="goItem" @touchstart="touchstartHandle('dragBox',$event)" @touchmove="touchmoveHandle('dragBox',$event)" @touchend="touchendHandle('dragBox',$event)">
    <van-icon name="http://chuantu.xyz/t6/742/1672300762x2890317095.png"  @click="delPhnoe" size="30"/>
  </div>
   goItem() {
      this.$emit('goEtone')
    },
    touchstartHandle(refName, e) {
      let element = e.targetTouches[0]
      // 记录点击的坐标
      this.coordinate.client = {
        x: element.clientX,
        y: element.clientY
      }
      // 记录需要移动的元素坐标
      this.coordinate.elePosition.left = this.$refs[refName].offsetLeft
      this.coordinate.elePosition.top = this.$refs[refName].offsetTop
    },
    touchmoveHandle(refName, e) {
      e.returnValue = false;
      let element = e.targetTouches[0]
      // 根据初始 client 位置计算移动距离(元素移动位置=元素初始位置+光标移动后的位置-光标点击时的初始位置)
      let x = this.coordinate.elePosition.left + (element.clientX - this.coordinate.client.x)
      let y = this.coordinate.elePosition.top + (element.clientY - this.coordinate.client.y)
      // 限制可移动距离,不超出可视区域
      x = x <= 0 ? 0 : x >= innerWidth - this.$refs[refName].offsetWidth ? innerWidth - this.$refs[refName].offsetWidth : x
      y = y <= 0 ? 0 : y >= innerHeight - this.$refs[refName].offsetHeight ? innerHeight - this.$refs[refName].offsetHeight : y
      // 移动当前元素
      this.$refs[refName].style.left = x + 'px'
      this.$refs[refName].style.top = y + 'px'
      e.returnValue = true;
    },
    touchendHandle(refName, e) {
      let element = e.changedTouches[0]
      let scree = document.body.clientWidth / 2
      let _clientX = element.clientX

      if (_clientX < scree) {
        this.$refs[refName].style.left = 10 + 'px'
      } else {
        this.$refs[refName].style.left = 8.3 + 'rem'
      }
    }

.main-plus {
  width: 1rem;
  height: 1rem;
  position: fixed;
  z-index: 10;
  bottom: 5rem;
  right: 0.2rem;
  border-radius: 50%;
  /*background-color: #5080FF;*/
  color: #fff;
  line-height: 1rem;
  text-align: center;
  font-size: 0.45rem;
}

标签:clientX,拖动,refs,refName,element,let,coordinate,H5,页面
From: https://blog.51cto.com/u_15734166/7576211

相关文章

  • 请问为什么加载标签文字的时候,导致页面上出现卡顿?
    加载标签文字导致页面卡顿的问题可能与多种因素有关。这些因素可能包括页面结构、网络请求、浏览器性能、脚本执行等。以下是一些可能导致页面卡顿的原因以及解决方法:大量DOM元素:如果页面包含大量的DOM元素,加载和渲染这些元素可能导致页面卡顿。解决方法包括减少DOM元素数量,使用虚......
  • 04_拖动文件渲染在页面中
      新建一个文件夹,跟之前一样,在Vscode终端里输入yarncreateelectron-appDrag。  在index.html添加以下代码,JS文件夹和render.js都是新创建的:  首先,css文件一般和html结合使用,相当于html是结构,而css是样式。在index.css添加以下代码:  在index.js......
  • wpf viewmodel中控制页面焦点
    publicstaticclassFocusBehavior{privatestaticDictionary<UIElement,RoutedEventHandler>handlers=newDictionary<UIElement,RoutedEventHandler>();publicstaticbool?GetIsFocused(DependencyObjectobj){......
  • 项目开发难点-项目中两个窗口的页面,其中一个选择数据后回显到另一个项目页面中
    方法一:sessionStorage  如果项目是在浏览器中,打开或跳转另一个页面(可以使用同一个控制台)的情况下,可以用sessionStroage来存储数据,然后另一个页面获取数据 方法二:postMessage 适用情况与方法一一致(两个页面可以使用同一个控制台)。第二个页面选择后发送数据给第一个页面: w......
  • c# winform 点击窗体任意位置可以拖动
    c#winform窗体,点击窗体标题头可以拖动,如果鼠标点击在里面的panel的时候就没有这个效果了,以下实现拖动的方法。转载自醉低调publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}[DllImport("use......
  • Docker上运行RabbitMQ,无法访问管理页面
    在CentOS7中的Docker安装并运行了RabbitMQ,但是在访问管理页面http://IP:15672/却提示拒绝访问这是因为在Docker上运行的RabbitMQ,默认情况下是没有启用管理插件和管理页面的使用命令dockerexec-it容器名/bin/bash进入RabbitMQ容器的命令行终端。容器名即CONTAINERID......
  • docker搭建青龙面板及页面空白解决方法
    最近也是想赚点小钱,搭建个青龙面包来挂脚本,但是在搭建过程中遇到过一些问题,所以记录下来。docker搭建青龙面板我这里是使用aliyun服务器进行搭建的,系统是centOS7.6版本。另外docker自行搜索安装即可。拉取青龙面板镜像远程登录服务器,输入命令拉取青龙镜像dockerpullwhyour......
  • 一些H5对接微信JSSDK的问题记录
    这里给大家分享我在实际生活中总结出来的一些知识,希望对大家有所帮助一.SDK引入这里提供两套引入流程,一套是vue2.0及其他h5项目,一套是vue3.0的引入流程不懂的也可以看我之前的一篇详细流程记录--微信调用jssdk全流程详解1.js引入直接在你的页面里引入js文件就行<scriptsr......
  • selenium自动化测试-获取动态页面小说
    有的网站页面是动态加载的资源,使用bs4库只能获取静态页面内容,无法获取动态页面内容,通过selenium自动化测试工具可以获取动态页面内容。参考之前的"bs4库爬取小说工具"文章代码,稍微修改下,就可以转成获取动态页面小说工具。第一步:先确定目标网址先找到小说目录页面。网址首页:'ht......
  • 心理测评测试h5公众号字节微信小程序app开源版开发
    心理测评测试h5公众号字节微信小程序app开源版开发以下是心理测评测试H5字节微信小程序App开源版的功能列表:用户注册和登录:用户可以通过注册账号和登录账号来使用小程序。心理测评测试:提供多种心理测评测试题目,用户可以通过选择答案来完成测试。测试结果分析:根据用户的测试结果,生成......