vue 移动到图片浮动_vue 悬浮可拖拽组件--可在屏幕上进行拖拽

本文展示了如何使用Vue创建一个悬浮按钮组件,该组件可以被拖拽并在屏幕上移动。通过监听鼠标事件,计算鼠标按下时与元素的初始位置差,进而实现元素随鼠标移动的效果。此外,还提供了相关的CSS样式以实现按钮的样式和定位。
摘要由CSDN通过智能技术生成

效果图

image.png

// 悬浮按钮组件

{{ text }}

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) {

// 鼠标按下,计算当前元素距离可视区的距离

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

}

}

}

}

.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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值