HTML5拖放

1.拖放實現邏輯

開始拖動 ===> 拖動中 ===> 拖動結束(放手)
ondragstart ===> ondragover ===> ondrop
ondragstart 綁定在需要被拖動的dom上
ondragover和ondrop綁定在接受被拖動dom進入的dom上

2.實例

單個dom的拖動

<!DOCTYPE html>
<html>
<head>
    <title>drag</title>
    <style type="text/css">
        .wrapper{
            width: 400px;
            height: 200px;
            padding: 10px;
            border: 1px solid red;
        }
        .wrapper img{
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <div class="wrapper" ondragover="dragOver(event)" ondrop="dragDrop(event)">
        <img id="dragImg" src="./login.jpg" draggable="true" ondragstart="dragStart(event)">
    </div>

    <div class="wrapper" ondragover="dragOver(event)" ondrop="dragDrop(event)">

    </div>
</body>
<script type="text/javascript">
    function dragStart (event) {
        event.dataTransfer.setData('Text', event.target.id);
    }
    function dragOver(event) {
        event.preventDefault();
    }
    function dragDrop(event) {
        event.preventDefault();
        var data = event.dataTransfer.getData('Text');
        event.target.appendChild(document.querySelector('#'+data));
    }
</script>
</html>

多個dom的拖動

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>dragList</title>
    <style type="text/css">
        #left{
            float: left;
            border: 1px solid red;
        }
        #right{
            float: right;
            border: 1px solid blue;
        }
        #left,#right{
            width: 300px;
            min-height: 400px;
        }
        .images img{
            max-width: 260px;
            max-height: 300px;
        }
    </style>
</head>
<body>
    <ul id="left">
        <li id="img1" class="images" draggable="true"><img src="login.jpg"></li>
        <li id="img2" class="images" draggable="true"><img src="loginu.png"></li>
        <li id="img3" class="images" draggable="true"><img src="反饋.png"></li>
    </ul>

    <ul id="right">
        <li id="img4" class="images" draggable="true"><img src="日落.png"></li>
        <li id="img5" class="images" draggable="true"><img src="等待.png"></li>
        <li id="img6" class="images" draggable="true"><img src="規則.png"></li>
    </ul>
</body>
<script type="text/javascript">
    window.onload = function () {
        function myPreventDefault(event) {
            if(event.preventDefault) {
                event.preventDefault();
            }else {
                event.returnValue = false;
            }
        }
        function myDragOver (event) {
            myPreventDefault(event);
        }

        function myDragDrop (event) {
            myPreventDefault(event);
            var data = event.dataTransfer.getData('Text');
            console.log(data);
            event.target.appendChild(document.getElementById(data));
        }
        function myDragStart(event) {
            event.dataTransfer.setData('Text', event.target.id);
        }


        var nodeList = document.querySelectorAll('.images');
        for (var i = 0; i < nodeList.length; i++) {
            nodeList[i].addEventListener('dragstart',myDragStart);  
        }
        document.getElementById('right').addEventListener('dragover', myDragOver);
        document.getElementById('right').addEventListener('drop', myDragDrop);

        document.getElementById('left').addEventListener('dragover', myDragOver);
        document.getElementById('left').addEventListener('drop', myDragDrop);

    }
</script>
</html>
發佈了106 篇原創文章 · 獲贊 52 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章