vuedraggable 是一款
拖拽元素的插件。
插件地址:https://www.npmjs.com/package/
vuedraggable
插件使用起来还是很简单的,官网给出了例子:
<
draggable v-model="myArray" :options="{group:'people'}" @start="drag=true" @end="drag=false">
代码如图,我想实现个表格拖拽行排序的功能,拖拽完后复原怎么办?比如,第一行内容是aaa,第二行内容是bbb,我想把bbb拖到第一行,等我拖完后松开鼠标,bbb又回到第二行了,但是绑定的list2已经变了,就是显示的内容没变,怎么解决
<draggable v-model="list2" @update="onSort" :options="{animation:500}">
<...
关于vue的draggable拖拽插件滚动后拖拽会出现影子与鼠标位置不同的问题
我遇到这个问题,满怀激动的在网上找资料,竟然如同全世界就我遇到这个问题一样,好吧,hhh
解决办法如下
问题产生:forceFallback=“true”,是这个属性设置的问题,这一步相当于不使用h5原生拖拽,h5拖拽是方便,但是呢,拖拽的影子改不了透明度是硬伤。设置之后,就会滚动后影子与鼠标位置偏离,你越往下滚动呢,这个偏离位置越大,我并不知道怎么取拿影子,所以一直在网上找资料,然后啥也没找到就是了.
通过配置@start=
对于vue实现可拖拽宽度的菜单,可以使用vuedraggable插件和vue-resizable插件。
vuedraggable插件可以实现拖拽排序的功能,而vue-resizable插件可以实现拖拽改变元素大小的功能。
以下是一个简单的实现示例:
1. 安装vuedraggable和vue-resizable插件
npm install vuedraggable vue-resizable
2. 在组件中引入插件并初始化
<template>
<div class="menu">
<vue-draggable v-model="menuItems">
<div v-for="(item, index) in menuItems" :key="index" class="menu-item">
<vue-resizable :resizable="true" :on-resize-stop="resize" :max-width="200" :min-width="100">
{{ item }}
</vue-resizable>
</vue-draggable>
</template>
<script>
import draggable from 'vuedraggable'
import resizable from 'vue-resizable'
export default {
components: {
'vue-draggable': draggable,
'vue-resizable': resizable
data () {
return {
menuItems: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5']
methods: {
resize (event) {
console.log(event)
</script>
在上面的代码中,使用了vuedraggable组件来包裹菜单项,使用了vue-resizable组件来包裹每个菜单项,并设置了最大和最小宽度,并在on-resize-stop事件中调用了resize方法。
3. 样式设置
为了使菜单项可拖拽和可改变大小,需要为其设置一些基本样式:
.menu {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
.menu-item {
display: flex;
align-items: center;
justify-content: center;
margin: 10px;
padding: 10px;
background-color: #ccc;
border: 1px solid #000;
cursor: move;
在上面的样式中,设置了菜单项为flex布局,并设置了一些基本样式,如背景色、边框等。
这样就可以实现一个简单的可拖拽和可改变大小的菜单了。