vue 懸浮可拖拽組件--可在屏幕上進行拖拽

效果圖


image.png
// 懸浮按鈕組件
<template>
  <div style="position:relative;">
    <div class="button-box" v-drag draggable="false">
      <div class="btn-bg-img" @dblclick="openBox"></div>
      <div class="font-box">{{ text }}</div>
    </div>
  </div>
</template>

<script>
export default {
  components: {caseInfo},
  props: ['caseID'],
  data () {
    return {
      text: '雙擊顯示案件詳情',
      isOpen: false,
      isMove: false
    }
  },
  methods: {
    openBox () {
      console.log('雙擊')
    },
    mousedowm (e) { // 鼠標按下時的鼠標所在的X,Y坐標
      this.mouseDownX = e.pageX
      this.mouseDownY = e.pageY
      // 初始位置的X,Y 坐標
      // this.initX = obj.offsetLeft;
      // this.initY = obj.offsetTop;
      console.log('e', e)
      // 表示鼠標已按下
      this.flag = true
    },
    mousemove (e) {
      if (this.flag) {
        console.log('e :', e)
      }
    }
  },
  directives: {
    drag (el) {
      let oDiv = el // 當前元素
      // let self = this // 上下文
      // 禁止選擇網頁上的文字
      document.onselectstart = function () {
        return false
      }
      oDiv.onmousedown = function (e) {
        // 鼠標按下磁携,計算當前元素距離可視區(qū)的距離
        let disX = e.clientX - oDiv.offsetLeft
        let disY = e.clientY - oDiv.offsetTop
        document.onmousemove = function (e) {
          // 通過事件委托,計算移動的距離
          let l = e.clientX - disX
          let t = e.clientY - disY
          // 移動當前元素
          oDiv.style.left = l + 'px'
          oDiv.style.top = t + 'px'
        }
        document.onmouseup = function (e) {
          document.onmousemove = null
          document.onmouseup = null
        }
        // return false不加的話可能導致黏連膝舅,就是拖到一個地方時div粘在鼠標上不下來,相當于onmouseup失效
        return false
      }
    }
  }
}
</script>

<style scoped>
.button-box {
  width: 80px;
  border-radius: 50%;
  position: fixed;
  bottom: 80px;
  right: 50px;
  padding-left: 15px;
  padding-top: 8px;
  cursor: pointer;
  opacity: 0.7;
  z-index: 888;
}
.btn-bg-img {
  width: 80px;
  height: 80px;
  background-image: url('../../../static/images/click.png');
  background-size: cover;
}
.button-box:hover {
  color: white;
  opacity: 1;
}

.font-box {
  width: 80px;
  color: #3193ef;
  text-align: center;
}
</style>

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末窑多,一起剝皮案震驚了整個濱河市仍稀,隨后出現的幾起案子,更是在濱河造成了極大的恐慌埂息,老刑警劉巖技潘,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異千康,居然都是意外死亡享幽,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門拾弃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來值桩,“玉大人,你說我怎么就攤上這事砸彬〉弑校” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵砂碉,是天一觀的道長蛀蜜。 經常有香客問我,道長增蹭,這世上最難降的妖魔是什么滴某? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮滋迈,結果婚禮上霎奢,老公的妹妹穿的比我還像新娘。我一直安慰自己饼灿,他們只是感情好幕侠,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碍彭,像睡著了一般晤硕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庇忌,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天舞箍,我揣著相機與錄音,去河邊找鬼皆疹。 笑死疏橄,一個胖子當著我的面吹牛,可吹牛的內容都是我干的略就。 我是一名探鬼主播捎迫,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼晃酒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了立砸?” 一聲冷哼從身側響起掖疮,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颗祝,沒想到半個月后浊闪,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡螺戳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年搁宾,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倔幼。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡盖腿,死狀恐怖,靈堂內的尸體忽然破棺而出损同,到底是詐尸還是另有隱情翩腐,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布膏燃,位于F島的核電站茂卦,受9級特大地震影響,放射性物質發(fā)生泄漏组哩。R本人自食惡果不足惜等龙,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伶贰。 院中可真熱鬧蛛砰,春花似錦、人聲如沸黍衙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琅翻。三九已至涯捻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間望迎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工凌外, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辩尊,地道東北人。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓康辑,卻偏偏與公主長得像摄欲,于是被迫代替她去往敵國和親轿亮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350