亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue中靈活拖拽的前端神器VueDraggablePlus的用法詳解

 更新時間:2024年03月06日 14:46:23   作者:墩墩大魔王丶  
這篇文章主要介紹了一款功能強大、靈活易用的前端組件VueDraggablePlus,作為前端工程師,我們經(jīng)常會遇到需要實現(xiàn)拖拽功能的場景,而VueDraggablePlus正是為了解決這一痛點而誕生的,讓我們一起來看看它的特點和用法吧

VueDraggablePlus是一個功能齊全、無縫遷移、靈活使用的拖拽組件,完全繼承了Sortable.js的所有功能,支持Vue 3和Vue 2,使用TypeScript編寫并提供完整的TS文檔,支持雙向綁定和自定義容器,可以通過組件、指令或函數(shù)式調(diào)用實現(xiàn)拖拽功能。

官網(wǎng): alfred-skyblue.gitee.io/vue-draggable-plus/

場景化引入:解決拖拽列表痛點

在日常開發(fā)中,我們經(jīng)常會遇到需要實現(xiàn)拖拽列表的需求,但是傳統(tǒng)的方法往往需要將拖拽功能作為列表的直接子元素來實現(xiàn),這在一些情況下會受到限制。比如,當我們使用一些組件庫時,如果組件庫中沒有提供列表根元素的插槽,我們就很難實現(xiàn)拖拽列表。這時,VueDraggablePlus就派上了用場!它可以讓你在任何元素上使用拖拽列表,通過指定元素的選擇器,來獲取到列表根元素,然后將列表根元素作為拖拽容器,輕松實現(xiàn)拖拽功能。

安裝

npm install vue-draggable-plus
<template>
    <VueDraggable ref="el" v-model="list">
      <div v-for="item in list" :key="item.id">
        {{ item.name }}
      </div>
    </VueDraggable>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { VueDraggable } from 'vue-draggable-plus'
const list = ref([
  {
    name: 'Joao',
    id: 1
  },
  {
    name: 'Jean',
    id: 2
  },
  {
    name: 'Johanna',
    id: 3
  },
  {
    name: 'Juan',
    id: 4
  }
])
</script>

alfred-skyblue.gitee.io/vue-draggable-plus

使用說明:多種用法靈活選擇

VueDraggablePlus提供了多種使用方式,您可以根據(jù)自己的需求選擇最適合的方式來實現(xiàn)拖拽功能。您可以使用組件的方式,在需要拖拽的元素上直接添加VueDraggablePlus組件;也可以使用函數(shù)的方式,通過調(diào)用函數(shù)來實現(xiàn)拖拽功能;還可以使用指令的方式,通過指定元素的選擇器來實現(xiàn)拖拽功能??傆幸豢钸m合您!

<template>
    <div
      v-draggable="[
        list,
        {
          animation: 150,
        }
      ]"
    >
      <div
        v-for="item in list"
        :key="item.id"
      >
        {{ item.name }}
      </div>
    </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { vDraggable } from 'vue-draggable-plus'
const list = ref([
  {
    name: 'Joao',
    id: 1
  },
  {
    name: 'Jean',
    id: 2
  },
  {
    name: 'Johanna',
    id: 3
  },
  {
    name: 'Juan',
    id: 4
  }
])

function onStart() {
  console.log('start')
}

function onUpdate() {
  console.log('update')
}
</script>

這里我們使用了VueDraggablePlus組件的方式來實現(xiàn)拖拽列表,將列表項包裹在VueDraggablePlus組件內(nèi),即可輕松實現(xiàn)拖拽功能。

解決痛點:完美繼承Sortable.js功能

VueDraggablePlus完全繼承了Sortable.js的所有功能,讓您可以盡情享受拖拽的樂趣。無論是拖拽排序、拖拽上傳還是拖拽調(diào)整布局,VueDraggablePlus都可以輕松應對,讓您的前端開發(fā)更加便捷高效。

演示:多種場景應用

VueDraggablePlus不僅功能強大,而且還支持多種場景的應用。比如雙列表拖拽、克隆、自定義克隆、指定元素觸發(fā)、指定目標容器、內(nèi)置動畫合并等,為您的項目提供了更多的可能性。

基礎使用

雙列表拖拽

克隆

自定義克隆

指定元素觸發(fā)

指定目標容器

Transition

內(nèi)置動畫合并

表格行拖拽

表格列拖拽

嵌套

組件參數(shù)和事件

參數(shù)

參數(shù)說明類型默認值
animation拖動時顯示動畫Number0
chosenClass被選中項的 CSS 類名String'sortable-chosen'
delay選中拖拽延時Number0
delayOnTouchOnlytouch 事件延遲Number0
direction拖拽方向,默認自動判斷??蛇x值有horizontal 和 verticalString-
disabled是否禁止拖拽Booleanfalse
dragClass拖拽項類名String'sortable-drag'
draggable指定元素內(nèi)的哪些項目應該是可拖動的String-
emptyInsertThreshold拖動時鼠標必須與空可排序項的距離(以像素為單位),以便將拖動元素插入到該可排序項中, 設置為0禁用此功能。Number5
easing簡化動畫。Easing-
fallbackClass當使用forceFallback的時候,被復制的dom的css類名Stringsortable-fallback
fallbackOnBody將cloned DOM 元素掛到body元素上。Booleanfalse
fallbackTolerance以像素為單位指定鼠標在被視為拖動之前應該移動多遠。Number0
filter不需要進行拖動的元素String-
forceFallback忽略 HTML5拖拽行為,強制回退Booleanfalse
ghostClassdrop placeholder的css類名String'sortable-ghost'
group要將元素從一個列表拖到另一個列表中,兩個列表必須具有相同的group 值。您還可以定義列表是否可以被移出、或者克隆以及接收其他列表元素。詳情查閱上方TS類型定義Group-
handle設置可拖拽句柄的css類名,如果不設置,默認對目標元素的子列表操作進行拖拽String-
invertSwap如果設置為 true,將始終使用反向交換區(qū)Booleanfalse
invertedSwapThreshold反向交換閾值,默認情況下將設置為swapThreshold 值Number-
preventOnFilter觸發(fā)filter時調(diào)用event.preventDefault()Booleantrue
removeCloneOnHide刪除不顯示的克隆元素,而不是僅僅隱藏它Booleantrue
sort定義列表單元是否可以在列表容器內(nèi)進行拖拽排序Booleantrue
swapThreshold交換區(qū)的閾值Number1
touchStartThreshold在取消延遲拖動事件之前點應該移動多少像素Number1
setData傳遞一個函數(shù),函數(shù)的第一個參數(shù)為DataTransfer類型,第二個參數(shù)為HTMLElement 類型Function-
scroll是否啟用滾動Boolean or HTMLElementtrue
scrollFn自定義滾動ScrollFn-
scrollSensitivity鼠標必須離邊緣多近才能開始滾動,單位 pxNumber-
scrollSpeed滾動速度(ms/px)Number-
bubbleScroll將自動滾動應用于所有父元素,以便更輕松地移動Booleantrue

事件函數(shù)

事件函數(shù)名稱說明類型
onChoose元素被選中時觸發(fā)((event: SortableEvent) => void)
onUnchoose元素取消選中時觸發(fā)((event: SortableEvent) => void)
onStart拖拽開始時觸發(fā)((event: SortableEvent) => void)
onEnd拖拽結(jié)束時觸發(fā)((event: SortableEvent) => void)
onAdd元素從一個列表拖拽到另一個列表時觸發(fā)((event: SortableEvent) => void)
onUpdate元素順序更新時觸發(fā)((event: SortableEvent) => void)
onSort列表任何更改都會觸發(fā)((event: SortableEvent) => void)
onRemove元素從列表中移除時觸發(fā)((event: SortableEvent) => void)
onFilter拖拽一個被過濾元素時觸發(fā)((event: SortableEvent) => void)
onMove拖拽移動時觸發(fā)((event: MoveEvent,originalEvent: Event) => void)
onClone克隆一個元素時觸發(fā)((event: SortableEvent) => void)
onChange拖拽元素改變位置時觸發(fā)`((event: SortableEvent) =>

示例

通過 監(jiān)聽 onStart 事件, 將當前選中項的背景設置為白透明的白色。

其中 SortableEvent 的 item 即當前拖拽項, 通過改變它的 style 即可。

通過 監(jiān)聽 onEnd 事件, 在拖拽結(jié)束時 ,將當前選中項的背景顏色還原。

<template>
  <VueDraggable ref="el" v-model="list" @start="onStart" @end="onEnd">
    <div v-for="item in list" :key="item.id" class="drag-item">
      <NodejsButton :title="item.name" />
    </div>
  </VueDraggable>
</template>

<script setup>
import { ref } from 'vue'
import NodejsButton from '@/components/button/nodejs-button.vue'
import { VueDraggable } from 'vue-draggable-plus'
const list = ref([
  {
    name: 'Aoooooo',
    id: 1
  },
  {
    name: 'Boooooo',
    id: 2
  },
  {
    name: 'Coooooo',
    id: 3
  },
  {
    name: 'Doooooo',
    id: 4
  }
])

const onStart = (e) => {
  e.item.style.backgroundColor = '#ffffff22'
}
const onEnd = () => {}
</script>

<style>
.drag-item {
  width: 240px;
  margin-bottom: 15px;
  cursor: grab;
  &:last-of-type {
    margin-bottom: 0;
  }
}
</style>

結(jié)語

通過本文的介紹,相信大家已經(jīng)對VueDraggablePlus有了初步的了解。作為前端工程師,掌握這樣一款功能強大、靈活易用的前端組件,將會為您的項目開發(fā)帶來很大的便利??靵韲L試一下吧,讓拖拽功能變得更加簡單愉快!

到此這篇關(guān)于Vue中靈活拖拽的前端神器VueDraggablePlus的用法詳解的文章就介紹到這了,更多相關(guān)Vue VueDraggablePlus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Vue3中使用CodeMirror插件的方法詳解

    在Vue3中使用CodeMirror插件的方法詳解

    CodeMirror是一個功能強大的Web代碼編輯器,廣泛應用于各種Web應用中,在Vue3項目中集成CodeMirror,可以顯著提升代碼編輯和展示的用戶體驗,本文將結(jié)合實際案例,詳細介紹在Vue3中使用CodeMirror插件的方法,需要的朋友可以參考下
    2024-12-12
  • Vue 樣式綁定的實現(xiàn)方法

    Vue 樣式綁定的實現(xiàn)方法

    學習 Vue 的時候覺得樣式綁定很簡單,但是使用的時候總是容易搞暈自己。這篇文章主要介紹了Vue 樣式綁定的實現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2019-01-01
  • vue按住shift鍵多選方式(以element框架的table為例)

    vue按住shift鍵多選方式(以element框架的table為例)

    這篇文章主要介紹了vue按住shift鍵多選方式(以element框架的table為例),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 基于Vue3實現(xiàn)日歷組件的示例代碼

    基于Vue3實現(xiàn)日歷組件的示例代碼

    日歷在很多地方都可以使用的到,這篇文章主要介紹了如何利用vue3實現(xiàn)簡單的日歷控件,文中通過示例代碼講解詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 詳解vue?cli中如何使用自定義的組件

    詳解vue?cli中如何使用自定義的組件

    Vue?CLI是一個強大的開發(fā)工具,可用于快速搭建Vue.js項目,在Vue?CLI中使用自定義組件是構(gòu)建交互式和模塊化Web應用的重要一環(huán),下面我們就來看看vue?cli中如何使用自定義的組件吧
    2023-11-11
  • Vue2?響應式系統(tǒng)之異步隊列

    Vue2?響應式系統(tǒng)之異步隊列

    這篇文章主要介紹了Vue2?響應式系統(tǒng)之異步隊列,文章基于Vue2?的相關(guān)資料展開對主題的詳細介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-04-04
  • vue2.0實現(xiàn)前端星星評分功能組件實例代碼

    vue2.0實現(xiàn)前端星星評分功能組件實例代碼

    本文通過實例代碼給大家介紹了vue2.0實現(xiàn)前端星星評分功能組件,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-02-02
  • vue2和vue3組件v-model區(qū)別詳析

    vue2和vue3組件v-model區(qū)別詳析

    v-model通常用于input的雙向數(shù)據(jù)綁定,它并不會向子組件傳遞數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于vue2和vue3組件v-model區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • ElementPlus表單rules校驗的方法步驟

    ElementPlus表單rules校驗的方法步驟

    相信大家經(jīng)常都會遇到要處理表單驗證的環(huán)節(jié),而我在最近的項目中也遇到需要做表單驗證的業(yè)務,下面這篇文章主要給大家介紹了關(guān)于ElementPlus表單rules校驗的方法步驟,需要的朋友可以參考下
    2023-04-04
  • vue3+vite實現(xiàn)在線預覽pdf功能

    vue3+vite實現(xiàn)在線預覽pdf功能

    這篇文章主要為大家詳細介紹了如何通過vue3和vite實現(xiàn)在線預覽pdf功能,文中的示例代碼簡潔易懂,具有一定的借鑒價值,感興趣的小伙伴可以學習一下
    2023-10-10

最新評論