最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

場(chǎng)景化引入:解決拖拽列表痛點(diǎn)

在日常開發(fā)中,我們經(jīng)常會(huì)遇到需要實(shí)現(xiàn)拖拽列表的需求,但是傳統(tǒng)的方法往往需要將拖拽功能作為列表的直接子元素來實(shí)現(xiàn),這在一些情況下會(huì)受到限制。比如,當(dāng)我們使用一些組件庫(kù)時(shí),如果組件庫(kù)中沒有提供列表根元素的插槽,我們就很難實(shí)現(xiàn)拖拽列表。這時(shí),VueDraggablePlus就派上了用場(chǎng)!它可以讓你在任何元素上使用拖拽列表,通過指定元素的選擇器,來獲取到列表根元素,然后將列表根元素作為拖拽容器,輕松實(shí)現(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ù)自己的需求選擇最適合的方式來實(shí)現(xiàn)拖拽功能。您可以使用組件的方式,在需要拖拽的元素上直接添加VueDraggablePlus組件;也可以使用函數(shù)的方式,通過調(diào)用函數(shù)來實(shí)現(xiàn)拖拽功能;還可以使用指令的方式,通過指定元素的選擇器來實(shí)現(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組件的方式來實(shí)現(xiàn)拖拽列表,將列表項(xiàng)包裹在VueDraggablePlus組件內(nèi),即可輕松實(shí)現(xiàn)拖拽功能。

解決痛點(diǎn):完美繼承Sortable.js功能

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

演示:多種場(chǎng)景應(yīng)用

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

基礎(chǔ)使用

雙列表拖拽

克隆

自定義克隆

指定元素觸發(fā)

指定目標(biāo)容器

Transition

內(nèi)置動(dòng)畫合并

表格行拖拽

表格列拖拽

嵌套

組件參數(shù)和事件

參數(shù)

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

事件函數(shù)

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

示例

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

其中 SortableEvent 的 item 即當(dāng)前拖拽項(xiàng), 通過改變它的 style 即可。

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

<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)對(duì)VueDraggablePlus有了初步的了解。作為前端工程師,掌握這樣一款功能強(qiáng)大、靈活易用的前端組件,將會(huì)為您的項(xiàng)目開發(fā)帶來很大的便利??靵韲L試一下吧,讓拖拽功能變得更加簡(jiǎn)單愉快!

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

相關(guān)文章

  • vue中報(bào)錯(cuò)“error‘xxx‘?is?defined?but?never?used”問題及解決

    vue中報(bào)錯(cuò)“error‘xxx‘?is?defined?but?never?used”問題及解決

    介紹了兩種解決代碼導(dǎo)入問題的方法:?jiǎn)我淮a解決和全局解決,第一種方法是在代碼前面添加特定代碼并保存;第二種方法是在package.json中添加代碼后重啟項(xiàng)目,這些方法可以有效解決導(dǎo)包錯(cuò)誤提示,希望對(duì)大家有幫助
    2024-10-10
  • vue2與vue3雙向數(shù)據(jù)綁定的區(qū)別說明

    vue2與vue3雙向數(shù)據(jù)綁定的區(qū)別說明

    這篇文章主要介紹了vue2與vue3雙向數(shù)據(jù)綁定的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 在vue項(xiàng)目中如何獲取視頻的時(shí)長(zhǎng)

    在vue項(xiàng)目中如何獲取視頻的時(shí)長(zhǎng)

    這篇文章主要介紹了在vue項(xiàng)目中如何獲取視頻的時(shí)長(zhǎng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue 彈窗時(shí) 監(jiān)聽手機(jī)返回鍵關(guān)閉彈窗功能(頁面不跳轉(zhuǎn))

    vue 彈窗時(shí) 監(jiān)聽手機(jī)返回鍵關(guān)閉彈窗功能(頁面不跳轉(zhuǎn))

    這篇文章主要介紹了vue 彈窗時(shí) 監(jiān)聽手機(jī)返回鍵關(guān)閉彈窗功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值(頁面不跳轉(zhuǎn)) ,需要的朋友可以參考下
    2019-05-05
  • el-table?動(dòng)態(tài)合并不定項(xiàng)多級(jí)表頭的方法

    el-table?動(dòng)態(tài)合并不定項(xiàng)多級(jí)表頭的方法

    本文主要介紹了el-table?動(dòng)態(tài)合并不定項(xiàng)多級(jí)表頭的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Django+vue跨域問題解決的詳細(xì)步驟

    Django+vue跨域問題解決的詳細(xì)步驟

    這篇文章主要介紹了Django+vue跨域問題解決的詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • vue中$nexttick,$set,$forceupdate的區(qū)別

    vue中$nexttick,$set,$forceupdate的區(qū)別

    本文主要介紹了vue中$nexttick,$set,$forceupdate的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Vue中使用Echarts響應(yīng)式布局flexible.js+rem適配方案詳解

    Vue中使用Echarts響應(yīng)式布局flexible.js+rem適配方案詳解

    這篇文章主要介紹了Vue中使用Echarts響應(yīng)式布局flexible.js+rem適配方案詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 基于Vue+Echart繪制動(dòng)態(tài)圖

    基于Vue+Echart繪制動(dòng)態(tài)圖

    這篇文章主要給大家介紹了基于Vue+Echart的動(dòng)態(tài)圖繪制,用戶需要展示他的數(shù)據(jù)庫(kù)是有哪個(gè)數(shù)據(jù)庫(kù)轉(zhuǎn)化的,需要展示數(shù)據(jù)庫(kù)的軌跡圖,前導(dǎo)庫(kù)的關(guān)系圖,文中有詳細(xì)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-10-10
  • vue中this.$createElement方法的使用

    vue中this.$createElement方法的使用

    這篇文章主要介紹了vue中this.$createElement方法的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

年辖:市辖区| 潮州市| 荔波县| 怀安县| 白山市| 淄博市| 雅江县| 潮安县| 建始县| 兴国县| 周宁县| 胶南市| 三江| 沙河市| 庆安县| 荃湾区| 平江县| 顺平县| 垦利县| 元朗区| 建昌县| 西昌市| 读书| 惠安县| 阿克陶县| 永兴县| 金昌市| 奉新县| 马关县| 大安市| 张家港市| 城口县| 龙州县| 宁乡县| 广丰县| 庆元县| 桐柏县| 枣阳市| 稷山县| 乃东县| 襄樊市|