色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue流程設計drag

黃文隆2年前8瀏覽0評論

drag功能是網頁設計和交互過程中經常會用到的功能,通過拖拽可以實現元素的位置變化、大小變化等等,可以更加方便的進行頁面布局。Vue作為現在非常流行的前端框架,也提供了drag的實現方法。在Vue中,drag主要分為兩類,一種是使用原生的HTML5 drag API,另一種則是使用一些第三方庫進行實現。

使用HTML5 drag API實現drag的方式相對比較簡單,只需要在HTML元素上添加相應的事件處理函數即可。例如,可以在元素的dragstart事件中,將需要移動的元素的id保存到內存中;在元素的dragover事件中獲取鼠標的當前位置,計算出需要移動的元素的位置并設置為樣式屬性。最后在元素的dragend事件中清除內存中保存的id信息,并做一些清理工作,這樣就完成了一個基本的drag的實現。

mounted() {
const ele = this.$refs.box
ele.addEventListener('dragstart', e =>{
const id = e.target.id
e.dataTransfer.setData('id', id)
})
ele.addEventListener('dragover', e =>{
e.preventDefault()
const id = e.dataTransfer.getData('id')
const target = document.getElementById(id)
target.style.left = e.clientX + 'px'
target.style.top = e.clientY + 'px'
})
ele.addEventListener('dragend', e =>{
e.dataTransfer.clearData()
})
}

但是使用HTML5 drag API存在一些局限性和兼容性問題。因此,一些第三方庫也提供了drag的實現方式,例如vue-draggable、vue-sortable、vuedraggable等等。這些庫使用了一些DOM操作和CSS動畫,提供了更加友好的API和UI。這里以vue-draggable為例,看一下具體的實現方式。

vue-draggable使用了Vue的渲染函數(render function)來動態生成DOM,通過實現組件的內部邏輯,來達到相應的drag的效果。在實現之前,需要安裝vue-draggable組件:npm i -S vuedraggable,然后在Vue的組件中導入vue-draggable組件:import draggable from 'vuedraggable'

< template >< draggable v-model="list" >< div
v-for="(item, index) in list"
:key="item.id"
>{{ item.text }}< /template >< script >import draggable from 'vuedraggable'
export default {
data() {
return {
list: [
{ id: 1, text: 'item 1' },
{ id: 2, text: 'item 2' },
{ id: 3, text: 'item 3' },
]
}
},
components: { draggable }
}

這樣就可以實現一個簡單的drag列表了。當然vue-draggable還提供了其他的一些配置項,例如設置觸發drag的選擇器、設置禁止某些元素進行drag等等。對于需要實現drag的業務,根據需求和實際情況選擇HTML5 drag API或者第三方庫實現即可。