美文网首页
JS通过拖拽互换元素位置

JS通过拖拽互换元素位置

作者: 码农私房菜 | 来源:发表于2022-08-31 10:27 被阅读0次

效果图

drag_img.png

JS部分

import React, { FC, useEffect } from 'react'

import './index.less'

interface IProps {}

const DragDom:FC<IProps> = (props) => {
    useEffect(() => {
        setTimeout(() => {
            //获取bg类的div列表
            var box = document.querySelector('.bg')?.getElementsByTagName('div')
            var content: any = null //当前box的内容记录变量
            if (!box) return
            console.log('可以拖拽了', box)
            for (let i = 0; i < box.length; i++) {
                //设置开始拖拽时的函数(记录当前box内容)
                box[i].ondragstart = function() {
                    content = this
                    console.log('ondragstart', content)
                }
                //阻止默认的事件,event来源JS已定义的变量
                box[i].ondragover = function(event) {
                    event.preventDefault()
                    console.log('ondragover')
                }
                //结束拖拽后的处理信息
                box[i].ondrop = function() {
                    console.log('ondrop', this)

                    if (content != null && content != this) {
                        let temp = document.createElement('div')
                        // 基础的交换写法
                        // @ts-ignore
                        document.querySelector('.bg')?.replaceChild(temp, this)
                        // @ts-ignore
                        document.querySelector('.bg')?.replaceChild(this, content)
                        document.querySelector('.bg')?.replaceChild(content, temp)
                    }
                }
            }
        }, 1000)
    }, [])

    return (
        <>
             
            <div className="bg">
                <div className="box1" draggable={true}>
                    1
                </div>
                <div className="box2" draggable={true}>
                    2
                </div>
                <div className="box3" draggable={true}>
                    3
                </div>
                <div className="box4" draggable={true}>
                    4
                </div>
                <div className="box5" draggable={true}>
                    5
                </div>
                <div className="box6" draggable={true}>
                    6
                </div>
                <div className="box7" draggable={true}>
                    7
                </div>
                <div className="box8" draggable={true}>
                    8
                </div>
            </div>

        </>
    )
}

export default DragDom

CSS部分

.bg {
    width: 750px;
    height: 750px;
    background: #000;
    position: fixed;
    left: 0;
    top: 0;
    z-index: 10000;
    div {
        width: 25%;
        height: 50%;
        float: left;
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 50px;
        color: #fff;
    }
}

.box1 {
    background: rgb(250, 230, 77);
}
.box2 {
    background: rgb(208, 113, 4);
}
.box3 {
    background: rgb(124, 248, 70);
}
.box4 {
    background: rgb(49, 239, 239);
}
.box5 {
    background: rgb(59, 80, 240);
}
.box6 {
    background: rgb(237, 71, 237);
}
.box7 {
    background: rgb(228, 23, 108);
}
.box8 {
    background: rgb(31, 55, 31);
}

相关文章

  • js拖拽元素互换位置

    *{margin: 0;padding: 0;} body,ul,li{margin:0;padding:0;...

  • HTML5拖拽drag

    通过拖拽实现页面元素的位置改变 实现拖拽效果 源元素 - 要拖拽的文件 目标元素 - 要拖拽到哪里去 目前实现拖拽...

  • js拖拽html元素工具类

    复制就能用的拖拽js方法 原生js实现拖拽元素方法 使用(注意拖拽目标元素需绝对定位 position: 'abs...

  • js实现拖拽

    js实现拖拽 实现方式 mousedown、mousemove和mouseup 拖着目标元素在页面任意位置如果要设...

  • JS互换两元素的位置

    同样是前几天阿里电话面的一道简单的DOM操作题,但是由于自己DOM操作掌握的不熟练,答的很烂.....这里总结一下...

  • Drag Drop---API

    在h4标准中,我们定义个拖拽事件是很麻烦的,用原生的js来实现拖拽的效果。我们需要计算拖拽的元素的坐标位置和距离之...

  • 前端学习JS基本知识

    初识js js书写位置 JS-API介绍 js语法格式 变量 变量命名规范 不通过第三个变量,让两个变量值互换 变...

  • H5拖拽drag

    我们在学习拖拽时要注意源元素、目标元素。在拖拽的过程,通过设置源元素、目标元素的相应事件,才能实现拖拽操作。 源元...

  • 使用 react-beautiful-dnd 快速实现可拖拽看板

    当我还在使用 react-dnd 设计拖拽逻辑和交互、当我还在为计算拖拽元素和 hover 元素的位置坐标而烦躁不...

  • HTML5 拖拽事件

    HTML5 拖拽事件图片自带拖拽功能其他元素也通过设置 draggable=true属性 实现拖拽功能 垃圾(拖拽...

网友评论

      本文标题:JS通过拖拽互换元素位置

      本文链接:https://www.haomeiwen.com/subject/trojnrtx.html