欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue自由拖掛

林子帆1年前6瀏覽0評論

Vue是一款目前廣受歡迎的JavaScript框架,不僅適合基礎開發者使用,也有足夠的功能和靈活性滿足高級開發者加強開發。Vue提供了很多強大的組件和功能,其中包括自由拖拽。

自由拖拽是Vue中非常實用的功能之一,可以讓用戶輕松地拖拽頁面中的各種元素,從而改變其位置。Vue實現自由拖拽主要使用Vue的指令。我們可以自定義一個指令用于拖拽元素。

Vue.directive('dragging', {
bind(el, binding, vnode) {
el.addEventListener('mousedown', handleMouseDown)
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
let isDragging = false
let startPos = { x: 0, y: 0 }
let curPos = { x: 0, y: 0 }
let deltaPos = { x: 0, y: 0 }
function handleMouseDown(e) {
isDragging = true
startPos.x = e.clientX
startPos.y = e.clientY
}
function handleMouseMove(e) {
if (isDragging) {
curPos.x = e.clientX
curPos.y = e.clientY
deltaPos.x = curPos.x - startPos.x
deltaPos.y = curPos.y - startPos.y
el.style.transform = `translate(${deltaPos.x}px, ${deltaPos.y}px)`
}
}
function handleMouseUp(e) {
isDragging = false
}
// 防止內存泄漏,及時移除事件監聽
el._dragging = { handleMouseDown, handleMouseMove, handleMouseUp }
},
unbind(el, binding, vnode) {
const { handleMouseDown, handleMouseMove, handleMouseUp } = el._dragging
el.removeEventListener('mousedown', handleMouseDown)
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
delete el._dragging
}
})

上述代碼是一個自定義指令,通過鼠標點擊和移動,實現拖拽元素的效果,這里是鼠標按下后,需要根據鼠標移動的位置,計算出需要移動的距離,然后通過transform樣式實現移動效果。

這樣我們就可以將指令v-dragging綁定在需要拖拽的元素上,然后就可以愉快地拖拽元素了。

<template>
<div v-dragging class="dragging-box"></div>
</template>

以上是自由拖拽的實現過程,Vue的指令功能可以讓開發者快速實現各種功能,提高開發效率和代碼質量。