首页 > 其他分享 >js实现拖拽功能(拖拽排序)

js实现拖拽功能(拖拽排序)

时间:2023-04-04 15:33:29浏览次数:36  
标签:oldData fw658 listData hbimg js https 排序 拖拽


<template>
    <transition-group class="container" name="sort">
        <div class="drag-item" v-for="(v,i) in dragArray" :key="i" :draggable="true"
            @dragstart="dragstart(v)"
            @dragenter="dragenter(v,$event)"
            @dragend="getDragend(dragArray, 'customer', $event)">
            <div>
                <img class="image" :src="v">
            </div>
        </div>
    </transition-group>
</template>

<script>
export default {
    data() {
        return {
            dragArray: [
                'https://hbimg.huabanimg.com/ba2874cacd3b57fec50445a609982bc8f8b32d0777957-eB2cZr_fw658',
                'https://hbimg.huabanimg.com/26d967376e87f473b7c224e52c528001f05275624019b-TAm4Qy_fw658',
                'https://hbimg.b0.upaiyun.com/b16df6e238d634cd53c1c65a0ab510e8f1206c36a2a0-dnnXHp_fw658',
                'https://hbimg.b0.upaiyun.com/af840fb96ecc26badbd26943a17787a0b4befb32d2be-3V6a92_fw658'
            ],
            oldData: [],
            newData: []
        };
    },
    methods: {
        /** 拖拽开始 */
        dragstart(value) {
            this.oldData = value;
        },
        /** 拖拽进行 */
        dragenter(value) {
            this.newData = value;
        },
        /** 拖拽结束 */
        getDragend(listData) {
            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.dragArray = newItems;
                // 每次拖拽结束后调用接口时时保存数据
                // saveApi(this.dragArray).then((res) => {})
            }
        }
    }
};
</script>
<style lang="scss" scoped>
.sort-move {
    transition: transform 1s;
}
.image {
    width: 70px;
    height: 70px;
    border-radius: 12px;
}
</style>

 

标签:oldData,fw658,listData,hbimg,js,https,排序,拖拽
From: https://www.cnblogs.com/DeerLin/p/17286593.html

相关文章

  • 项目实践后的图片压缩完整使用过程【vue3+js】
    van-uploader+图片压缩+图片base64转成file compressImage.jsconstACCEPT=['image/jpg','image/png','image/jpeg']constMAXSIZE=1024*1024*2;constMAXTIP="4"//压缩算法函数/*1.首先拿到了base64的图片字符串2.创建一个image对象,获......
  • js实现文字左右轮播
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title><styletype="text/css">.textDiv{position:relative;......
  • 算法训练——剑指offer(排序算法)摘要
    摘要一、排序算法原理与解题方法二、排序算法练习题目2.1数组中重复的数字数组中重复的数字_牛客题霸_牛客网package排序算法;importjava.util.ArrayList;/***@ClassnameJZ3数组中重复的数字*@DescriptionTODO*@Date2022/2/49:20*@Createdbyxjl*/publi......
  • 算法从入门到精通:选择排序
    一、排序和算法排序是算法中的一部分,也叫排序算法。算法一般用来处理数据,而数据的处理最好是要找到他们的规律,这个规律中有很大一部分就是要进行排序,所以需要有排序算法。本节讲解的是选择排序,从选择排序开始认识排序的一些基础概念。之所以将选择排序作为排序的入门,原因是选择排......
  • 如何编写高质量的 JS 函数(2) -- 命名/注释/鲁棒篇
    vivo互联网技术微信公众号 作者:杨昆上篇《如何编写高质量的JS函数(1)--敲山震虎篇》介绍了函数的执行机制,此篇将会从函数的命名、注释和鲁棒性方面,阐述如何编写高质量的JS函数。(一)函数命名一、目前前端的函数命名存在什么问题从上图可以知道,命名和缓存是计算机科学中的......
  • Wiki.js配置LDAP认证
    安装好wikijs之后,可以进行进一步的详细配置.这里介绍LDAP认证的配置.在管理->身份验证->添加策略->选择LDAP/AD,如下:接下来进行详细配置:显示名称:按需修改是否启用:是LDAPURL:格式为:ldap://serverhost:389orldaps://serverhost:636Admin......
  • Wiki.js配置LDAP认证
    安装好wikijs之后,可以进行进一步的详细配置.这里介绍LDAP认证的配置.在管理->身份验证->添加策略->选择LDAP/AD,如下:接下来进行详细配置:显示名称:按需修改是否启用:是LDAPURL:格式为:ldap://serverhost:389orldaps://serverhost:636Admin......
  • 快速排序
    快速排序题目描述本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填......
  • 【LeetCode排序专题02】最小k个数,关于快速排序的讨论
    最小k个数输入整数数组arr,找出其中最小的k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例1:输入:arr=[3,2,1],k=2输出:[1,2]或者[2,1]示例2:输入:arr=[0,1,2,1],k=1输出:[0]限制:0<=k<=arr.length<=100000<=arr[i......
  • Three.js 进阶之旅:全景漫游-初阶移动相机版
    Three.js进阶之旅:全景漫游-初阶移动相机版 声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。摘要3D 全景技术可以实现日常生活中的很多功能需求,比如地图的街景全景模式、数字展厅、在线看房、社交......