美文网首页
JS的ondrag事件(拖拽效果)

JS的ondrag事件(拖拽效果)

作者: Gino_Li | 来源:发表于2019-03-12 13:59 被阅读0次

draggable:

html元素属性,设置为true时,表示该元素可以进行拖动。

<p draggable="true" id = "testP"></p>

拖动事件:

1.dragstart:当元素拖动的时候触发
2.dragover:当元素拖动到目标容器时触发
3.drop:当元素拖动到目标容器并松开鼠标时触发

拖动事件四步走:

1.设置拖动元素为可拖动状态(也就是设置元素的draggable属性为true时)
2.给拖动元素添加dragstart事件:并通过事件对象的e.transfer对象的setData的方法设置一个属性
3.给目标容器添加drop事件,再通过事件对象的dataTransfer对象的getData方法来获取上一步设置的属性,从而获取到拖动元素,然后再通过appendChild方法将拖动元素添加到目标容器。
4.给目标容器添加dragover事件,用来阻止默认的拖动事件。

<body>
        <!--第一步-->
        <p id="testP" draggable="true" >拖动我</p>
        <div class="test"></div>
        <div class="test"></div>
        
        <script>
            var testP = document.querySelector('#testP');
            var test = document.querySelector('.test');
            
            //第二步
            testP.addEventListener('dragstart',(e)=>{
                //通过setData方法向dataTransfer对象添加一个属性
                //名pid,值为拖动元素的ID
                e.dataTransfer.setData('pid',e.target.id);
                console.log(e.target)
            })
            
            //第三步
            test.addEventListener('drop',(e)=>{
                //获取到拖动元素的id
                let data = e.dataTransfer.getData('pid');
                //通过id获取到拖动元素
                let p = document.getElementById(data);
                console.log(p)
                test.appendChild(p);
            })
            
            //第四步
            document.addEventListener('dragover',function(e){
                e.preventDefault();
            })
        </script>
</body>

拓展:

使用mousedownmousemovemousedown模拟拖拽效果

<body>
        <div class="square"></div>
        
        <script>
            var square = document.querySelector('.square');
            function drag(el){
                var isClick = false;
                    el.addEventListener('mousedown',function(e){
                        isClick = true;
                        let x = e.clientX,
                            y = e.clientY,  
                            //方块元素距离浏览器左边和顶部的距离
                            elLeft = el.offsetLeft,
                            elTop = el.offsetTop;
                
                            
                        document.addEventListener('mousemove',function(e){
                            let clx = e.clientX;
                            let cly = e.clientY;
                                
                            if(isClick==true){ 
                                //x-elLeft,点击元素位置距离元素左边边界的位置
                                //clx-(x-elLeft), 
                                el.style.left= clx -(x-elLeft)+'px';
                                el.style.top=cly - (y- elTop)+'px';
                            }
                        })
                    })
                    document.addEventListener('mouseup',function(){
                        isClick=false;
                    })
            }
            drag(square);
            
        </script>
    </body>

相关文章

  • JS的ondrag事件(拖拽效果)

    draggable: html元素属性,设置为true时,表示该元素可以进行拖动。 拖动事件: 1.dragsta...

  • 01-H5拖拽

    属性 draggable='true' 事件 ondragstart 开始拖拽 ondrag 正在拖拽 ondra...

  • Html5 + Css 3 文件拖拽上传功能

    拖拽上传文件功能 拖拽事件 拖拽元素ondrag 应用于拖拽元素,整个拖拽过程都会调用ondragstart应用...

  • 拖拽上传

    拖拽事件 拖拽元素ondrag 应用于拖拽元素,整个拖拽过程都会调用ondragstart应用于拖拽元素,...

  • Axure RP9中OnDrag(拖拽)的使用说明

    制作原型的时候,我们也会经常使用拖拽效果,今天我们就来一起看看OnDrag的事件。 版权说明:以下内容,除标明引用...

  • 元素拖曳 H5

    拖拽 如何让一个元素变成拖拽元素 draggable=‘true’ ondrag 应用于拖拽元素,整个拖拽过程都会...

  • 拖拽API

    实现拖拽效果 目前实现拖拽效果 HTML5拖拽 源元素事件例子 目标元素事件 从本地拖放图片到页面中 实现拖拽

  • Drag Drop---API

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

  • 拖拽

    一、JS拖拽JS里拖拽三事件, onmousedown onmousemove onmouseup 是实现交互性效...

  • ztree 拖拽

    一定要引入jquery.ztree.exedit.js文件,不然根本不会触发onDrag事件!!!!!其他的官网上...

网友评论

      本文标题:JS的ondrag事件(拖拽效果)

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