html5專題

拖拽

在相應的可拖拽元素上設置 draggable=‘true’
事件:
可拖動元素
1、dragstart:開始拖拽
2、drag:拖拽過程中
3、dragend:拖拽結束
拖拽的接受目標區域
1、dragenter:進入目標區域
2、dragover:在目標區域中
3、dragleave:離開目標區域
4、dragdrop:在目標區域中松開(需要早dragover事件中阻止默認事件)

傳送和接收數據:

event.dataTransfer.setdata('text',this.index)
event.dataTransfer.getdata('text')

拖拽購物車案例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    * {
        margin: 0;
        padding: 0;
    }

    ul:after {
        display: block;
        content: '';
        clear: both;
    }

    li {
        list-style: none;
        float: left;
        width: 200px;
        border: 1px solid #000;
        margin: 10px;
    }

    li img {
        width: 200px;
    }

    p {
        border-bottom: 1px dashed #000;
    }

    #div1 {
        width: 600px;
        height: 300px;
        border: 1px #000 solid;
    }

    .box1 {
        float: left;
        width: 200px;
    }

    .box2 {
        float: left;
        width: 200px;
    }

    .box3 {
        float: left;
        width: 200px;
    }

    #allMoney {
        float: right;
    }
    </style>
    <script>
    window.onload = function() {
        var oLi = document.getElementsByTagName('li');
        var oDiv = document.getElementById('div1');
        var obj = {};
        var iNum = 0;
        var allMoney = null;
        for (var i = 0; i < oLi.length; i++) {
            oLi[i].ondragstart = function(ev) {
                var aP = this.getElementsByTagName('p')
                ev.dataTransfer.setData('title', aP[0].innerHTML)
                ev.dataTransfer.setData('money', aP[1].innerHTML)
                //ev.dataTransfer.setDragImage(this,0,0);
            }
        }

        oDiv.ondragover = function(ev) {
            ev.preventDefault();

        }
        oDiv.ondrop = function(ev) {
            ev.preventDefault();
            var sTitle = ev.dataTransfer.getData('title');
            var sMoney = ev.dataTransfer.getData('money');
            if (!obj[sTitle]) {
                oDiv.innerHTML = oDiv.innerHTML + `
                <p>
                    <span class="box1">1</span>
                    <span class="box2">${sTitle}</span>
                    <span class="box3">${sMoney}</span>
              </p>

            `
                obj[sTitle] = 1;
            } else {
                var box1 = document.getElementsByClassName('box1');
                var box2 = document.getElementsByClassName('box2');
                for (var i = 0; i < box2.length; i++) {
                    if (box2[i].innerHTML == sTitle) {
                        box1[i].innerHTML = parseInt(box1[i].innerHTML) + 1;
                    }
                }
            }

            iNum += parseInt(sMoney);
            console.log(iNum);
            if (!allMoney) {
                oDiv.innerHTML = oDiv.innerHTML + `<div id="allMoney">${iNum}¥</div>`
                allMoney = 1;
            }
            document.getElementById('allMoney').innerHTML = iNum + '¥';
            oDiv.appendChild(document.getElementById('allMoney'));

        }

    }
    </script>
</head>

<body>
    <ul>
        <li draggable='true'>
            ![](js高程.jpg)
            <p>js高級程序設計</p>
            <p>80¥</p>
        </li>
        <li draggable='true'>
            ![](css.jpg)
            <p>css技術指南</p>
            <p>60¥</p>
        </li>
        <li draggable='true'>
            ![](node.jpg)
            <p>node深入學習</p>
            <p>78¥</p>
        </li>
    </ul>
    <div id="div1">
    </div>
</body>

</html>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 之前寫過一篇瀏覽器事件的相關操作和事件運行的原理——JavaScript瀏覽器事件解析。這一篇主要寫一些常用的事件...
    faremax閱讀 1,644評論 0 0
  • html5出現了很多比較好的應用,今天我們來講講關于元素拖動的。 前言 關于拖動,我們應該理解什么是拖動源和放置目...
    儂姝沁兒閱讀 1,273評論 0 5
  • 1.htm5新特性 1.語義化標簽 1.1.htm5新特性 1.2.新選著器### 1.3 獲取class列表屬性...
    believedream閱讀 558評論 0 0
  • HTML5新特性 拖拽使用心得 本文主要介紹了拖拽和拖放的幾個屬性 先構建一個框架 draggable 為了使元素...
    三井豆閱讀 1,119評論 0 4
  • 善是一家上市公司的銷售總監,年薪20萬,在別人眼里,她外表光鮮亮麗,又嫁了一個家底殷實且很愛她的老公,結婚兩年后就...
    小米的自白閱讀 313評論 0 0