HTML5拖放的基本使用(4步)

一、设置元素为可拖放

<img draggable="true">

二、拖动什么- ondragstart 和 setData()

拖动什么,就给什么绑定拖动开始的事件(ondragstart)和设置拖动的数据(setData)

<img draggable="true" ondragstrat="drag(event)">

<script>
    function drag(ev){
        // 设置拖放的数据,把目标的id赋值给 "Text"
        ev.dataTransfer.setData("Text",ev.target.id)
    }
</script>

三、放到何处 - ondragover

默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。

<img draggable="true" ondragstrat="drag(event)">
<div id="div1"  ondragover="allowDrop(event)"></div>
<script>
    function drag(ev){
        // 设置拖放的数据,把目标的id赋值给 "Text"
        ev.dataTransfer.setData("Text",ev.target.id)
    }
    //设置元素可被放置
    function allowDrop(ev)
    {
        ev.preventDefault();
    }
</script>

四、进行放置 - ondrop

事件绑定在需要放置的元素上。

通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。

<img id="drag1" src="xxx" draggable="true" ondragstrat="drag(event)">
<div id="div1"  ondragover="allowDrop(event)" ondrop="drop(event)"></div>
<script>
    function drag(ev){
        // 设置拖放的数据,把目标的id赋值给 "Text"
        ev.dataTransfer.setData("Text",ev.target.id)
    }
    //设置元素可被放置
    function allowDrop(ev)
    {
        ev.preventDefault();
    }
    //进行放置
    function drop(ev)
    {
        ev.preventDefault();
        var data=ev.dataTransfer.getData("Text");
        ev.target.appendChild(document.getElementById(data));
    }

</script>

如果需要在两个元素中来回拖放,按照思路,给这两个元素设置为可放置即可。

猜你喜欢

转载自blog.csdn.net/qq_40441489/article/details/103555837