html5——拖拽

基本情况

在HTML5的规范中,我们可以通过为元素增加draggable="true"来设置此元素是否可以进行拖拽操作,其中图片、链接默认是开启的。

拖拽元素

页面中设置了draggable="true"属性的元素

目标元素

任意元素都能成为目标元素

事件监听

//拖拽元素
ondrag         //应用于拖拽元素,整个拖拽过程都会调用
ondragstart    //应用于拖拽元素,当拖拽开始时调用
ondragleave    //应用于拖拽元素,当鼠标离开拖拽元素时调用
ondragend      //应用于拖拽元素,当拖拽结束时调用
//目标元素
ondragenter    //应用于目标元素,当拖拽元素进入时调用
ondragover     //应用于目标元素,当停留在目标元素上时调用
ondrop         //应用于目标元素,当在目标元素上松开鼠标时调用
ondragleave    //应用于目标元素,当鼠标离开目标元素时调用

 默认事件

ondragover    //默认不会让其他盒子放置在盒子内,e.preventDefault()可以组织默认事件

拖拽案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        div {
            width: 400px;
            height: 400px;
            background-color: greenyellow;
        }

        .box2 {
            margin: 0px auto;
        }

        ul {
            width: 100%;
            height: 100%;
            list-style: none;
        }

        li {
            float: left;
            width: 100px;
            height: 100px;
            background-color: #cccccc;
            border-radius: 50px;
            text-align: center;
            line-height: 100px;
        }
    </style>
</head>
<body>
<div class="box1">
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
</div>
<div class="box2">
    <ul>
    </ul>
</div>
<script>
    var liArr = document.querySelectorAll(".box1 ul li");
    var box2 = document.querySelector(".box2");
    var ul = document.querySelector(".box2 ul");
    var currLi = null;
    for (var i = 0; i < liArr.length; i++) {
        liArr[i].draggable = true;
        liArr[i].ondragstart = function (ev) {
            currLi = this;
        }
    }
    ul.ondragover = function (e) {
        e.preventDefault();
    }
    ul.ondrop = function (ev) {
        ul.appendChild(currLi);
    }
</script>
</body>
</html>

原文地址:https://www.cnblogs.com/wuqiuxue/p/8098528.html