Vue.Draggable实现交换位置

yizhihongxing

需要实现拖拽排序的网页功能时,可以选用Vue.Draggable这个js库来实现。技术栈需要熟悉Vue框架及基本的HTML和CSS。

以下是实现Vue.Draggable交换位置的步骤:

1.引入 Vue.Draggable 库:使用 npm 直接进行安装,通过 import 引入库即可。或者直接引入js文件。

//页面引入 Vue.Draggable JS文件
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.22.0/vuedraggable.umd.min.js"></script>

使用 npm 安装 Vue.Draggable 库

npm install vuedraggable --save
import vuedraggable from 'vuedraggable'
Vue.component('draggable',vuedraggable)
  1. 绑定数据:在 components 中注册组件,在 data 里绑定要显示的列表数据。
<draggable v-model="list1">
    <div class="drag-row" v-for="(item, index) in list1" :key="index">{{ item }}</div>
</draggable>

data: {
    list1: ["item1", "item2", "item3"]
}    
  1. 定义样式:自定义每个子元素的样式,实现拖拽效果
/*移动时的背景,?开启硬件加速*/
.drag-list:active {
    cursor: move;
    -webkit-user-select: none;
    user-select: none;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
}

/*每个元素的样式*/
.drag-row {
    background-color: #f7f7f7;
    padding: 10px;
    margin: 5px 0;
}

附:demo用例1

<template>
<div class="demo-container">
    <draggable v-model="list1" @end="handleDrop">
        <div class="drag-row" v-for="(item, index) in list1" :key="index">{{ item }}</div>
    </draggable>
</div>
</template>

<script>
    import draggable from 'vuedraggable'
    export default {
        data() {
            return {
                list1: ['item1', 'item2', 'item3', 'item4', 'item5', 'item6']
            }
        },
        components: {
            draggable
        },
        methods: {
            handleDrop(event) {
                console.log('拖拽完成,当前顺序', this.list1)
            }
        }
    }
</script>

附:demo用例2(实现拖动与删除)

<template>
<div class="demo-container">
    <draggable v-model="list1" @end="handleDrop">
        <div class="drag-row" v-for="(item, index) in list1" :key="index" >
            {# 修改这个(点击删除时调用的方法) #}
            <span class="delete-btn" @click.stop="deleteItem(item)">X</span>
            {{ item }}
        </div>
    </draggable>
</div>
</template>

<script>
    import draggable from 'vuedraggable'
    export default {
        data() {
            return {
                list1: ['item1', 'item2', 'item3', 'item4', 'item5', 'item6']
            }
        },
        components: {
            draggable
        },
        methods: {
            handleDrop(event) {
                console.log('拖拽完成,当前顺序', this.list1)
            },

            /* 新增删除方法 */
            deleteItem(item) {
                const index = this.list1.indexOf(item)
                if (index > -1) {
                    this.list1.splice(index, 1)
                }
            }
        }
    }
</script>

至此,完成Vue.Draggable实现交换位置的攻略。

需要注意的是,Vue.Draggable不仅能够实现交换位置,还可以实现多方向拖拽、拖拽与排序、拖拽与删除等功能,具体的使用可以查阅官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue.Draggable实现交换位置 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • Vue使用CDN引用项目组件,减少项目体积的步骤

    Vue使用CDN引用项目组件,可以减少项目体积,提高页面加载速度。下面是完整的攻略: 步骤一:引入Vue.js文件 首先,我们需要在HTML文件中引入Vue.js文件。可以从UNPKG或者cdnjs获取CDN链接。 下面是一个例子,使用了UNPKG的Vue.js文件链接: <!DOCTYPE html> <html lang="e…

    Vue 2023年5月28日
    00
  • 如何使用VuePress搭建一个类型element ui文档

    使用VuePress搭建一个类型element ui文档可以分为以下几个步骤: 1. 安装VuePress 使用VuePress需要先安装Node.js和npm,在命令行中输入以下命令进行安装: npm install -g vuepress 2. 初始化项目 在命令行中进入本地的一个空文件夹,输入以下命令进行项目的初始化: npm init -y 接着,在…

    Vue 2023年5月28日
    00
  • 为什么vue中不建议使用空字符串作为className

    在Vue中使用类名时,应尽量避免空字符串作为类名,以下是原因及解决方案: 1. 空字符串无法清除类名 在Vue中使用 v-bind:class 绑定类名时,空字符串会被视为有效的类名。当我们通过更改 data 中的属性值来更改类名时,空字符串也会作为一个类名被添加。但是,一旦添加上了空字符串,就无法通过更改该属性值来清除这个空字符串类名。 示例代码: &lt…

    Vue 2023年5月27日
    00
  • 记录–使用el-time-picker默认值遇到的问题

    记录–使用el-time-picker默认值遇到的问题 问题描述 在使用element-ui中的el-time-picker组件时,如果要设置默认值,可以通过v-model绑定一个时间对象来完成。例如: <template> <el-time-picker v-model="defaultTime"></e…

    Vue 2023年5月29日
    00
  • 详细聊聊Vue中的MVVM模式原理

    详细聊聊Vue中的MVVM模式原理 MVVM模式概述 MVVM模式是一种软件架构模式,它通过将应用程序分为三个部分来实现软件开发的分层和解耦,包括视图(View)、视图模型(ViewModel)和模型(Model)。其中,视图模型是视图和模型之间的中介层,用于将视图与模型之间的交互隔离开来,从而简化了视图和模型之间的耦合性。 在Vue中,MVVM模式的实现主…

    Vue 2023年5月27日
    00
  • VUE + OPENLAYERS实现实时定位功能

    下面我将为您详细讲解“VUE + OPENLAYERS实现实时定位功能”的完整攻略。 前言 OpenLayers是一个高性能、功能丰富、易于使用的web地图库和开发工具包。在本教程中,我们将演示如何结合Vue框架和OpenLayers库,实现实时定位功能。 环境搭建 在开始编写代码之前,我们需要进行环境搭建。具体步骤如下: 安装Node.js和Vue CLI…

    Vue 2023年5月28日
    00
  • axios的简单封装以及使用实例代码

    下面是对于“axios的简单封装以及使用实例代码”的完整攻略: 1. axios基础概念 axios是一个基于Promise的HTTP客户端,用于浏览器和Node.js。 它支持同步请求和异步请求,并提供了优秀的HTTP拦截器。 axios提供了丰富的配置项,例如设置请求头、设置请求方式、设置超时时间等。 2. 封装axios 对axios进行简单的封装可以…

    Vue 2023年5月28日
    00
  • vue3.0 CLI – 2.6 – 组件的复用入门教程

    下面我将详细讲解“vue3.0 CLI – 2.6 – 组件的复用入门教程”的完整攻略。 1. 什么是组件? 在 Vue 中,组件是一种可复用的、独立的模块,用于封装相关的 HTML、CSS 和 JavaScript。组件的出现可以让 Web 应用程序更轻松地维护和扩展。 2. 组件的创建 在 Vue 中,用 Vue.component 方法来创建组件。例如…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部