html5之拖放

來源:互聯網
上載者:User

標籤:ems   類型   doc   selector   one   art   tar   stat   request   

1)建立來源項目

  1.1)draggable屬性的值:

      true——此元素能被拖動;

      false——此元素不能被拖動;

      auto——瀏覽器能夠自主決定某個元素能否被拖動;

  1.2)被拖動元素的事件:

      dragstart——在元素開始被拖動時觸發;

      drag——在元素被拖動時重複觸發。

      dragend——在拖動操作完畢時觸發;

2)建立釋放區

   2.1)釋放區事件:

        dragenter——當被拖動元素進入釋放區所佔領的螢幕空間時觸發;

        dragover——當被拖動元素在釋放區內觸發時移動觸發;

        dragleave——當被拖動元素沒有放入就離開釋放區時觸發;

        drop——當被拖動元素在釋放區放下時觸發。

<!DOCTYPE HTML><html>    <head>        <title>Example</title>        <style>            #src > * {float:left;}            #src > img {border: thin solid black; padding: 2px; margin:4px;}            #target {border: thin solid black; margin:4px;}            #target { height: 81px; width: 81px; text-align: center; display: table;}            #target > p {display: table-cell; vertical-align: middle;}            img.dragged {background-color: lightgrey;}        </style>    </head>    <body>        <div id="src">            <img draggable="true" id="banana" src="banana100.png" alt="banana"/>            <img draggable="true" id="apple" src="apple100.png" alt="apple"/>            <img draggable="true" id="cherries" src="cherries100.png" alt="cherry"/>            <div id="target">                <p id="msg">Drop Here</p>            </div>                    </div>                        <script>            var src = document.getElementById("src");            var target = document.getElementById("target");            var msg = document.getElementById("msg");                      var draggedID;                      target.ondragenter = handleDrag;            target.ondragover = handleDrag;                        function handleDrag(e) {                e.preventDefault();            }                        target.ondrop = function(e) {                var newElem = document.getElementById(draggedID).cloneNode(false);                target.innerHTML = "";                target.appendChild(newElem);                e.preventDefault();            }                      src.ondragstart = function(e) {                draggedID = e.target.id;                e.target.classList.add("dragged");            }                        src.ondragend = function(e) {                var elems = document.querySelectorAll(".dragged");                for (var i = 0; i < elems.length; i++) {                    elems[i].classList.remove("dragged");                }            }                  </script>    </body></html>
3)使用DataTransfer對象

  3.1)與拖放操作所觸發的事件同一時候派發的對象是DragEvent,它派生於MouseEvent。

  DragEvent對象定義的額外屬性:

  dataTransfer——返回用於資料轉送到釋放區的對象(DataTransfer);

  3.2)DataTransfer對象定義的屬性:

  types——返回資料的格式。

  getData(<format>)——返回指定格式的資料;

  setData(<format>,<data>)——設定指定格式的資料。

  clearData(<format>)——移除指定格式的資料。

  files——返回已被拖動檔案的列表。  

<!DOCTYPE HTML><html>    <head>        <title>Example</title>        <style>            #src > * {float:left;}            #src > img {border: thin solid black; padding: 2px; margin:4px;}            #target {border: thin solid black; margin:4px;}            #target { height: 81px; width: 81px; text-align: center; display: table;}            #target > p {display: table-cell; vertical-align: middle;}            img.dragged {background-color: lightgrey;}        </style>    </head>    <body>        <div id="src">            <img draggable="true" id="banana" src="banana100.png" alt="banana"/>            <img draggable="true" id="apple" src="apple100.png" alt="apple"/>            <img draggable="true" id="cherries" src="cherries100.png" alt="cherry"/>            <div id="target">                <p id="msg">Drop Here</p>            </div>                    </div>                        <script>            var src = document.getElementById("src");            var target = document.getElementById("target");                                target.ondragenter = handleDrag;            target.ondragover = handleDrag;                        function handleDrag(e) {                e.preventDefault();            }                        target.ondrop = function(e) {                var droppedID = e.dataTransfer.getData("Text");                               var newElem = document.getElementById(droppedID).cloneNode(false);                target.innerHTML = "";                target.appendChild(newElem);                e.preventDefault();            }                      src.ondragstart = function(e) {                e.dataTransfer.setData("Text", e.target.id);                e.target.classList.add("dragged");            }                        src.ondragend = function(e) {                var elems = document.querySelectorAll(".dragged");                for (var i = 0; i < elems.length; i++) {                    elems[i].classList.remove("dragged");                }            }                  </script>    </body></html>
    3.3)拖放檔案:

    File對象定義的屬性

    name——擷取檔案名稱。

    type——擷取檔案類型。以MIME類型表示;

    size——擷取檔案大小(以位元組計算);

<!DOCTYPE HTML><html>    <head>        <title>Example</title>        <style>            .table {display:table;}            .row {display:table-row;}            .cell {display: table-cell; padding: 5px;}            .label {text-align: right;}            #target {border: medium double black; margin:4px; height: 50px;                width: 200px; text-align: center; display: table;}            #target > p {display: table-cell; vertical-align: middle;}        </style>    </head>    <body>        <form id="fruitform" method="post" action="http://titan:8080/form">            <div class="table">                <div class="row">                    <div class="cell label">Bananas:</div>                    <div class="cell"><input name="bananas" value="2"/></div>                </div>                <div class="row">                    <div class="cell label">Apples:</div>                    <div class="cell"><input name="apples" value="5"/></div>                </div>                <div class="row">                    <div class="cell label">Cherries:</div>                    <div class="cell"><input name="cherries" value="20"/></div>                </div>                <div class="row">                    <div class="cell label">File:</div>                    <div class="cell"><input type="file" name="file"/></div>                </div>                <div class="row">                    <div class="cell label">Total:</div>                    <div id="results" class="cell">0 items</div>                </div>                            </div>            <div id="target">                <p id="msg">Drop Files Here</p>            </div>                        <button id="submit" type="submit">Submit Form</button>        </form>        <script>            var target = document.getElementById("target");                 var httpRequest;            var fileList;                                     document.getElementById("submit").onclick = handleButtonPress;                                target.ondragenter = handleDrag;            target.ondragover = handleDrag;                        function handleDrag(e) {                e.preventDefault();            }                        target.ondrop = function(e) {                fileList = e.dataTransfer.files;                e.preventDefault();            }                                               function handleButtonPress(e) {                e.preventDefault();                                 var form = document.getElementById("fruitform");                var formData = new FormData(form);                                 if (fileList || true) {                    for (var i = 0; i < fileList.length; i++) {                        formData.append("file" + i, fileList[i]);                    }                }                                   httpRequest = new XMLHttpRequest();                httpRequest.onreadystatechange = handleResponse;                httpRequest.open("POST", form.action);                httpRequest.send(formData);            }                                     function handleResponse() {                if (httpRequest.readyState == 4 && httpRequest.status == 200) {                    var data = JSON.parse(httpRequest.responseText);                    document.getElementById("results").innerHTML = "You ordered "                        + data.total + " items";                }            }         </script>    </body></html>

html5之拖放

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.