自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

尤雨溪都在推薦的 Vue 拖拽庫(kù)!

開發(fā) 前端
Sortablejs 是一個(gè)非常流行的拖拽庫(kù),不過這個(gè)庫(kù)的 Vue 3 版本已經(jīng)三年沒更新了,可以說(shuō)是已經(jīng)跟 Vue 3 嚴(yán)重脫節(jié),所以誕生了這個(gè)項(xiàng)目,這個(gè)組件是基于 Sortablejs 的。

最近看到尤雨溪推薦了一個(gè)基于 Vue 的拖拽庫(kù):VueDraggablePlus,本文就來(lái)看看這個(gè)拖拽庫(kù)有什么特別之處!

概念

Sortablejs 是一個(gè)非常流行的拖拽庫(kù),不過這個(gè)庫(kù)的 Vue 3 版本已經(jīng)三年沒更新了,可以說(shuō)是已經(jīng)跟 Vue 3 嚴(yán)重脫節(jié),所以誕生了這個(gè)項(xiàng)目,這個(gè)組件是基于 Sortablejs 的。

在 Sortablejs 官方以往的 Vue 組件中,都是通過使用組件作為列表的直接子元素來(lái)實(shí)現(xiàn)拖拽列表,當(dāng)使用一些組件庫(kù)時(shí),如果組件庫(kù)中沒有提供列表根元素的插槽,就很難實(shí)現(xiàn)拖拽列表,vue-draggable-plus 完美解決了這個(gè)問題,它可以讓你在任何元素上使用拖拽列表,可以使用指定元素的選擇器,來(lái)獲取到列表根元素,然后將列表根元素作為 Sortablejs 的 container。

VueDraggablePlus 是一個(gè)支持 Vue2 和 Vue3 的拖拽庫(kù),它具有以下特性:

  • 功能齊全:全面繼承 Sortable.js 的所有功能。
  • 無(wú)縫遷移:適用于 Vue 3 和 Vue2。
  • 靈活使用:支持組件、指令、函數(shù)式調(diào)用,總有一款是您喜歡的。
  • 類型強(qiáng):用 TypeScript 編寫,帶有完整的 TS 文檔。
  • 雙向綁定:支持 v-model 雙向綁定。
  • 自定義容器:將指定容器作為拖拽容器。

使用

在使用 之前,需要使用以下 npm 命令進(jìn)行安裝:

npm install vue-draggable-plus

VueDraggablePlus 支持通過組件、指令、Hooks方式使用:

  • 組件方式:
<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>
  • Hooks 方式:
<template>
    <div
      ref="el"
    >
      <div
        v-for="item in list"
        :key="item.id"
      >
        {{ item.name }}
      </div>
    </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { useDraggable, type UseDraggableReturn } from 'vue-draggable-plus'

const el = ref()

const list = ref([
  {
    name: 'Joao',
    id: 1
  },
  {
    name: 'Jean',
    id: 2
  },
  {
    name: 'Johanna',
    id: 3
  },
  {
    name: 'Juan',
    id: 4
  }
])
// 返回值是一個(gè)對(duì)象,包含了一些方法,比如 start、destroy、pause 等
const draggable = useDraggable<UseDraggableReturn>(el, list, {
  animation: 150,
  onStart() {
    console.log('start')
  },
  onUpdate() {
    console.log('update')
  }
})
</script>
  • 指令方式:
<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 提供非常多的 API:

參數(shù)

說(shuō)明

類型

默認(rèn)值

animation

拖動(dòng)時(shí)顯示動(dòng)畫

Number

0

chosenClass

被選中項(xiàng)的 css 類名

String

'sortable-chosen'

delay

選中拖拽延時(shí)

Number

0

delayOnTouchOnly

touch 事件延遲

Number

0

direction

拖拽方向,默認(rèn)自動(dòng)判斷

'vertical'\

'horizontal'

disabled

是否禁止拖拽

Boolean

false

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禁用此功能。

Number

5

easing

簡(jiǎn)化動(dòng)畫。

Easing

-

fallbackClass

當(dāng)使用forceFallback的時(shí)候,被復(fù)制的dom的css類名

String

sortable-fallback

fallbackOnBody

將cloned DOM 元素掛到body元素上。

Boolean

false

fallbackTolerance

以像素為單位指定鼠標(biāo)在被視為拖動(dòng)之前應(yīng)該移動(dòng)多遠(yuǎn)。

Number

0

filter

不需要進(jìn)行拖動(dòng)的元素

String

-

forceFallback

忽略 HTML5拖拽行為,強(qiáng)制回退

Boolean

false

ghostClass

drop 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ū)

Boolean

false

invertedSwapThreshold

反向交換閾值,默認(rèn)情況下將設(shè)置為swapThreshold 值

Number

-

preventOnFilter

觸發(fā)filter時(shí)調(diào)用event.preventDefault()

Boolean

true

removeCloneOnHide

刪除不顯示的克隆元素,而不是僅僅隱藏它

Boolean

true

sort

定義列表單元是否可以在列表容器內(nèi)進(jìn)行拖拽排序

Boolean

true

swapThreshold

交換區(qū)的閾值

Number

1

touchStartThreshold

在取消延遲拖動(dòng)事件之前點(diǎn)應(yīng)該移動(dòng)多少像素

Number

1

setData

傳遞一個(gè)函數(shù),函數(shù)的第一個(gè)參數(shù)為DataTransfer類型,第二個(gè)參數(shù)為HTMLElement 類型

Function


scroll

是否啟用滾動(dòng)

Boolean\

HTMLElement

scrollFn

自定義滾動(dòng)

ScrollFn

-

scrollSensitivity

鼠標(biāo)必須離邊緣多近才能開始滾動(dòng),單位 px

Number

-

scrollSpeed

滾動(dòng)速度(ms/px)

number

-

bubbleScroll

將自動(dòng)滾動(dòng)應(yīng)用于所有父元素,以便更輕松地移動(dòng)

Boolean

true

onChoose

元素被選中

((event: SortableEvent) => void)

-

onUnchoose

元素取消選中

((event: SortableEvent) => void)

-

onStart

元素開始拖拽

((event: SortableEvent) => void)

-

onEnd

元素取消拖拽

((event: SortableEvent) => void)

-

onAdd

元素從一個(gè)列表拖拽到另一個(gè)列表

((event: SortableEvent) => void)

-

onUpdate

元素順序更新時(shí)觸發(fā)

((event: SortableEvent) => void)

-

onSort

列表的任何更改都會(huì)觸發(fā)

((event: SortableEvent) => void)

-

onRemove

元素從列表中移除進(jìn)入另一個(gè)列表

((event: SortableEvent) => void)

-

onFilter

試圖拖拽一個(gè)filtered的元素

((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) => void)

-

小結(jié)

Github:https://github.com/Alfred-Skyblue/vue-draggable-plus。

責(zé)任編輯:姜華 來(lái)源: 前端充電寶
相關(guān)推薦

2024-03-06 07:28:23

Vue前端開發(fā)Vapor 模式

2023-12-20 15:41:46

VueViteVue 3

2023-07-26 08:34:40

VueReact

2023-10-06 09:43:13

2024-10-09 14:07:05

2022-09-08 16:31:17

前端Web

2022-01-26 11:00:59

尤雨溪Vue漏洞

2021-08-19 06:20:32

Native CSS 前端尤雨溪

2024-03-08 08:40:25

2018-12-13 12:13:04

前端開發(fā)編程

2024-05-30 07:07:00

Virtual虛擬 DOM前端

2024-07-11 09:00:13

2022-11-02 08:12:47

TurbopackVite

2022-11-08 15:19:49

軟件工具

2024-07-12 08:03:18

2024-01-04 08:32:28

2024-11-07 18:54:26

2012-03-27 09:14:14

百度開發(fā)者大會(huì)尤雨溪

2024-11-06 09:11:33

編程語(yǔ)言程序員

2024-03-27 08:21:06

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)