vue 悬浮按钮,可拖拽

不知道看的哪位大佬的代码,改了改适合自己的需求,想着记录一下,以后直接copy。
组件内定义一个指令:
因为我的是要保持靠近顶部,且只能左右滑动,所以我把顶部的赋值去掉了。

directives: {
      drag: {
        bind: function (el, binding, vnode) {
          const odiv = el
          let firstTime = ''
          let lastTime = ''
          odiv.onmousedown = (e) => {
            const disX = e.clientX - odiv.offsetLeft
            // const disY = e.clientY - odiv.offsetTop
            firstTime = new Date().getTime()
            document.onmousemove = (e) => {
              let left = e.clientX - disX
              // const top = e.clientY - disY

              // vnode.context.positionX = top
              vnode.context.positionY = left
              const screenWidth = window.innerWidth - 50
              // 判断不超出边界
              if (left < 0) {
                left = 0
              } else if (left > screenWidth) {
                left = screenWidth
              }
              odiv.style.left = left + 'px'
              // odiv.style.top = top + 'px'
            }
            document.onmouseup = () => {
              document.onmousemove = null
              document.onmouseup = null
              lastTime = new Date().getTime()
              // 解决拖拽和点击事件冲突
              if (lastTime - firstTime < 200) {
                console.log('click')
              }
            }
          }
        }
      }
    }

使用:

<template>
  <div
    class="top-float-button"
    :style="moveStyle"
    v-drag
  >
    <img src="./../../assets/floatImg.png" />
    <span>测试</span>
  </div>
</template>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,581评论 2 59
  • 俗话说光说不练假把式。那就先来感受下Weex的魅力: 一.目的 Weex虽然从阿里爸爸把它生出来也有两年时间了,但...
    长安好阅读 76,267评论 10 98
  • 前言 嗨,大家好,好久不见。一个月没写过文章了,这里跟大家侃侃这中间发生了什么。 一个月前呢,想准备面试,就网上随...
    积木zz阅读 11,497评论 1 36
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,091评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,916评论 1 32

友情链接更多精彩内容