HTML5拖拽练习

HTML5提供专门的拖拽与拖放的API,以后实现这类效果就不必乱折腾了

相关属性和事件如下:

1、DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer。
   2、 draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如:<div title="拖拽我" draggable="true">列表1</div>
   3、 ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上
   4、 ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上
   5、 ondragover 事件:拖拽元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上

6、 ondragleave事件 - 当被鼠标拖动的对象离开其容器范围内时触发此事件,此事件作用在目标元素上
   7、 ondrop 事件:被拖拽的元素在目标元素上同时鼠标放开触发的事件,此事件作用在目标元素上
   8、 ondragend 事件:当拖拽完成后触发的事件,此事件作用在被拖曳元素上
   9、 Event.preventDefault() 方法:阻止默认的些事件方法等执行。在ondragover中一定要执行preventDefault(),否则ondrop事件不会被触发。另外,如果 是从其他应用软件或是文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或是相关信息,并不是真的执行drop。此时需要用用 document的ondragover事件把它直接干掉。
   10、 Event.effectAllowed 属性:就是拖拽的效果。

下面就以拖动一张图片到一层DIV上为例

1.效果如图:

<!DOCTYPE HTML>
<html>
<head>
    <title></title>
    <script src="jquery-min.js"></script>
    <style>
        #div1 {
            width: 200px;
            height: 100px;
            background: #ccc;
            display: inline-block;
            vertical-align: top;
        }

    </style>
    <script type="text/javascript">
        function dragstart(e) {
            e.dataTransfer.setData("img1", e.target.id);
        }

        function dragover(e) {
            e.preventDefault();
        }

        function drop(e) {
            e.preventDefault();
            e.target.appendChild(document.getElementById(e.dataTransfer.getData("img1")));
        }
    </script>
</head>
<body>

    <div id="div1" ondrop="drop(event)" ondragover="dragover(event)"></div>
    <img id="img1" src="1.jpg" draggable="true" ondragstart="dragstart(event)"/>
</body>
</html>

或:

<!DOCTYPE HTML>
<html>
<head>
    <title></title>
    <script src="jquery-min.js"></script>
    <style>
        #div1 {
            width: 200px;
            height: 100px;
            background: #ccc;
            display: inline-block;
            vertical-align: top;
        }

    </style>
    <script type="text/javascript">
        $(function () {
            var dragimg = $("#img1")[0];
            var dropdiv = $("#div1")[0];

            dragimg.draggable = true;
            dragimg.ondragstart = function (e) {
                e.dataTransfer.setData("img", e.target.id);
            }
            dropdiv.ondragover = function (e) {
                e.preventDefault();
            }
            dropdiv.ondrop = function (e) {
                e.preventDefault();
                e.target.appendChild(document.getElementById(e.dataTransfer.getData("img")));
            }

        });
    </script>
</head>
<body>

    <div id="div1"></div>
    <img id="img1" src="1.jpg"/>
</body>
</html>

2.多个层间拖拽图片:

<!DOCTYPE HTML>
<html>
<head>
    <title></title>
    <script src="jquery-min.js"></script>
    <style>
        div {
            width: 200px;
            height: 100px;
            background: #ccc;
            display: inline-block;
            vertical-align: top;
        }

    </style>
    <script type="text/javascript">
        $(function () {
            var dragimg = $("#img1")[0];
            var $dropdiv = $("div");

            dragimg.draggable = true;
            dragimg.ondragstart = function (e) {
                e.dataTransfer.setData("img", e.target.id);
            }

            $dropdiv.each(function () {
                this.ondragover = function (e) {
                    e.preventDefault();
                }
                this.ondrop = function (e) {
                    e.preventDefault();
                    e.target.appendChild(document.getElementById(e.dataTransfer.getData("img")));
                }
            });
        });
    </script>
</head>
<body>

    <div id="div1">div1</div>
    <div id="div2">div2</div>
    <div id="div3">div3</div>
    <div id="div4">div4</div>
    <div id="div5">div5</div>
    <img id="img1" src="1.jpg"/>
</body>
</html>

3.添加一些效果,更人性化:

<!DOCTYPE HTML>
<html>
<head>
    <title></title>
    <script src="jquery-min.js"></script>
    <style>
        div {
            width: 200px;
            height: 100px;
            background: #ccc;
            display: inline-block;
            vertical-align: top;
        }

    </style>
    <script type="text/javascript">
        $(function () {
            var dragimg = $("#img1")[0];
            var $dropdiv = $("div");

            dragimg.draggable = true;
            dragimg.ondragstart = function (e) {
                e.dataTransfer.effectAllowed = "move";
                e.dataTransfer.setData("img", e.target.id);
            }
            dragimg.ondragend = function () {
                $dropdiv.css("background", "#ccc");
            }
            $dropdiv.each(function () {
                this.ondragover = function (e) {
                    e.preventDefault();
                }
                this.ondragenter = function (e) {
                    $(this).css(‘background‘,‘yellow‘)

                }
                this.ondragleave = function (e) {
                    $(this).css(‘background‘, ‘#ccc‘);
                }
                this.ondrop = function (e) {
                    e.dataTransfer.dropEffect="move"
                    e.preventDefault();
                    e.target.appendChild(document.getElementById(e.dataTransfer.getData("img")));
                }
            });
        });
    </script>
</head>
<body>

    <div id="div1">div1</div>
    <div id="div2">div2</div>
    <div id="div3">div3</div>
    <div id="div4">div4</div>
    <div id="div5">div5</div>
    <img id="img1" src="1.jpg"/>
</body>
</html>

以上实例功能一个比一个强,可以慢慢消化,假以时日就可以更加纯熟,

时间: 2024-09-30 02:52:10

HTML5拖拽练习的相关文章

每天一个JavaScript实例-html5拖拽

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-html5拖拽</title> <style> #drop{ width:300px; height:200px; background-

Java实现HTML5拖拽文件上传

这是主页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+reques

html5 拖拽的简要介绍

1,首先,你要告诉计算机那个元素可以拖动,或者是一张图,或者是一个盒子,在标签里面加上 draggable="true"  2,然后,监听该元素被拖动的函数 ondragstart="drag(event)" 3,drag 里面告诉计算机是那个元素被拖动的 ev.dataTransfer.setData("Text",ev.target.id); 4,接下来将拖动的元素放到哪个盒子,(或者是经过那个盒子,经过某个盒子的时候触法 ondragove

html5拖拽-初探

先看看效果 完整测试代码: <p>Html5 拖拽</p> <div id="box" ondrop="handleDrop(event)" ondragover="allowDrop(event)"></div> <br> <img id="img1" src="images/screen1.jpg" draggable="tru

Html5拖拽复制

拖拽是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖拽是标准的一部分,任何元素都能够拖拽. Html5拖拽非常常见的一个功能,但是大部分拖拽的案例都是一个剪切的过程, 项目中需要实现Html5拖拽复制的功能,Html5拖拽复制很简单,只需要在普通Html5拖拽的过程中做一点小小的改动即可. ps: 本篇博文为非首页文章,只是简单的笔记. 浏览器支持 Internet Explorer 9 Firefox Opera 12 Chrome Safari 5 v1.0代码部分

html5 拖拽练习题

html5新的拖拽 只支持Internet Explorer 9.Firefox.Opera 12.Chrome 以及 Safari 5 支持拖放. 来一个实例: <!DOCTYPE html> <html> <head> <style type="text/css"> table td{ width:120px; height:50px; border:1px solid #000; } table td div.dragDiv{ ma

HTML5 拖拽实现

简介: 最早在网页中引入JavaScript拖放功能是IE4.当时,网页中只有两种对象可以拖放:图像和某些文本.拖放图像时,把鼠标放到图像上,按住鼠标不放就可以拖放它.拖放文本时,要先选中文本,然后可以像拖放图像一样拖放被选中的文本.在IE4中,唯一有效的放置目标是文本框.到了IE5,拖放功能得到拓展,添加了新的事件,而且几乎网页中的任何元素都可以作为放置目标.IE5.5更进一步让网页中的任何元素都可以拖放.HTML5以IE的实例为基础指定了拖放规范.  一.基本释义  1 实现拖拽效果   *

HTML5拖拽——将本地文件拖拽到网页中显示

HTML5标准中的提供的用于文件输入输出(I/O)的对象 File: 代表一个文件对象 FileList: 代表一个文件列表,类数组对象 FileReader 用于从文件中提取内容 FileWrite 用于向文件中写入类容 这些对象需要在 H5的拖拽事件中通过 e.dataTransfer 来访问和获取 完成效果如下: Data URL给了我们一种很巧妙的将图片"嵌入"到HTML中的方法.跟传统的用img标记将服务器上的图片引用到页面中的方式不一样,在Data URL协议中,图片被转换

HTML5拖拽上传图片预览

参考博文1:http://blog.csdn.net/testcs_dn/article/details/8695532 参考博文2:http://justcoding.iteye.com/blog/2105760 1.文件API:(File API) file类型的的表单控件选择的每一个文件都是一个file对象,而FileList对象则是这些file对象的集合列表,代表所选择的所有文件.file对象继承于Blob对象,该对象表示二进制原始数据,提供slice方法,可以访问到字节内部的原始数据块

html5拖拽总结

拖拽(Drag 和 drop)是 HTML5 标准的组成部分.拖拽是一种常见的特性,即抓取对象以后拖到另一个位置. Internet Explorer 9.Firefox.Opera 12.Chrome 以及 Safari 5 支持拖放. DataTransfer 对象 退拽对象用来传递的媒介,使用一般为Event.dataTransfer. 被拖元素: ondragstart(开始拖拽) function drag(ev) { ev.dataTransfer.setData("Text&quo