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阅读 5,565评论 0 0
  • html5出现了很多比较好的应用,今天我们来讲讲关于元素拖动的。 前言 关于拖动,我们应该理解什么是拖动源和放置目...
    侬姝沁儿阅读 5,025评论 0 5
  • 1.htm5新特性 1.语义化标签 1.1.htm5新特性 1.2.新选着器### 1.3 获取class列表属性...
    believedream阅读 3,567评论 0 0
  • HTML5新特性 拖拽使用心得 本文主要介绍了拖拽和拖放的几个属性 先构建一个框架 draggable 为了使元素...
    三井豆阅读 4,746评论 0 4
  • 善是一家上市公司的销售总监,年薪20万,在别人眼里,她外表光鲜亮丽,又嫁了一个家底殷实且很爱她的老公,结婚两年后就...
    小米的自白阅读 2,405评论 0 0