vue实现页面div盒子拖拽排序功能

 更新时间:2021年10月21日 16:21:00   作者:bug爱好者  
本文主要介绍了vue实现页面div盒子拖拽排序功能,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

vue 实现页面div盒子拖拽排序功能前言:目前市面上有很多实现拖拽排序功能的插件和方法,本节不过多累述,只讲一种:css3的transition-group方法

效果图:

1. DOM中使用:

    <transition-group class="container" name="sort">
        <div class="app-item" v-for="app in customApps" :key="app.id" :draggable="true"
            @dragstart="dragstart(app)"
            @dragenter="dragenter(app,$event)"
            @dragend="getDragend(customApps, 'customer', $event)">
            <div>
                <img class="icon_a" v-if="app.logo" :src="app.logo" >
                <div class="ellipsis" >{{app.name}}</div>
            </div>
        </div>
    </transition-group>

2. data中定义数据

    import { APi } from '@/api/enterpriseAPi'
    <script>
        export default {
            data() {
                return {
                    oldData: [],
                    newData: [],
                    customApps: [],
                    dragStartId: '',
                    dragEndId: ''
                }
            }
        }
    </script>

3. methods方法中使用

    dragstart(value) {
        this.oldData = value
        this.dragStartId = value.id
    },
    dragenter(value) {
        this.newData = value
        this.dragEndId = value.id
    },
    getDragend(listData, type) {
            if (this.oldData !== this.newData) {
                let oldIndex = listData.indexOf(this.oldData)
                let newIndex = listData.indexOf(this.newData)
                let newItems = [...listData]
                // 删除之前DOM节点
                newItems.splice(oldIndex, 1)
                // 在拖拽结束目标位置增加新的DOM节点
                newItems.splice(newIndex, 0, this.oldData)
                // 每次拖拽结束后,将拖拽处理完成的数据,赋值原数组,使DOM视图更新,页面显示拖拽动画
                this.customApps = newItems
                // 每次拖拽结束后调用接口时时保存数据
               Api(this.dragStartId, this.dragEndId).then((res) => {})
            }
        },

拖拽完成动画样式:

    <style lang="scss" scoped>
        .sort-move {
            transition: transform 1s;
        }
    </style>

到此这篇关于vue实现页面div盒子拖拽排序功能的文章就介绍到这了,更多相关vue div盒子拖拽排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue利用Mixin轻松实现代码复用

    Vue利用Mixin轻松实现代码复用

    Mixin,中文翻译为"混入",在Vue中是一种非常有用的功能,可以解决许多开发中的常见问题,下面就让我们一起深入了解一下Mixin在Vue中解决了哪些问题吧
    2023-06-06
  • vue图片懒加载代码实现

    vue图片懒加载代码实现

    这篇文章主要给大家介绍了关于vue图片懒加载代码实现的相关资料,所谓图片懒加载是指当我们浏览页面时,只加载我们浏览器可视区的图片,向下滚动时再继续加载后面的图片,需要的朋友可以参考下
    2023-07-07
  • vue中利用simplemde实现markdown编辑器(增加图片上传功能)

    vue中利用simplemde实现markdown编辑器(增加图片上传功能)

    这篇文章主要介绍了vue中利用simplemde实现markdown编辑器(增加图片上传功能),本文通过实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue中构造数组数据之map和forEach方法实现

    Vue中构造数组数据之map和forEach方法实现

    数组操作是前端最重要的数据操作,构造数组数据,又是数组操作中很常见的,本文将梳理下map和forEach方法在Vue项目中的使用,感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • 用vite搭建vue3应用的实现方法

    用vite搭建vue3应用的实现方法

    这篇文章主要介绍了用vite搭建vue3应用的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • vue elementUI el-form 数据无法赋值且不报错的问题及解决方法

    vue elementUI el-form 数据无法赋值且不报错的问题及解决方法

    vue项目中使用elementUI的el-form组件,里面有部分后端数据遍历的字段和部分确定的字段,遇到个问题遍历的字段可以修改值但是确定的几个字段无法修改值,下面小编给大家分享vue elementUI el-form 数据无法赋值且不报错的问题及解决方法,感兴趣的朋友一起看看吧
    2023-12-12
  • vue中activated的用法

    vue中activated的用法

    这篇文章主要介绍了vue中activated的用法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2021-01-01
  • vue-cli中实现响应式布局的方法

    vue-cli中实现响应式布局的方法

    这篇文章主要介绍了vue-cli中实现响应式布局的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • vue 导出文件,携带请求头token操作

    vue 导出文件,携带请求头token操作

    这篇文章主要介绍了vue 导出文件,携带请求头token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue项目怎样用nginx反向代理WebSocket请求地址

    vue项目怎样用nginx反向代理WebSocket请求地址

    这篇文章主要介绍了vue项目怎样用nginx反向代理WebSocket请求地址问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论