H5学习之3 拖拽元素 放置元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style type="text/css">
        #div1 {
            width: 488px;
            height: 100px;
            padding: 10px;
            border: 5px black solid;
        }
    </style>
    <!--定义样式/CSS
       padding 是内边距,增大可以增加整个方形div的大小
       border 是边框的属性 10px是边框线的粗细, yellow设置颜色, solid设置为显示
       -->

    <script type="text/javascript">
        function allowDrop(ev) {
            ev.preventDefault(); //默认是不能将一个元素拖拽放到另外一个元素上,需要阻止这种默认形式。
        }

        function drag(ev){
            ev.dataTransfer.setData("Text",ev.target.id); //拖拽发生时,会给被拖拽的元素 一个类型,一个值。
            // Text是类型,ev.target.id是值。ev是本事件,ev.target是事件所在的元素,ev.target.id是元素的ID
        }

        function drop(ev){
            ev.preventDefault(); //W3S的解释是默认是以链接形式打拖拽后的效果,阻止默认,就会在原界面中产生效果。 但是注释掉这行,仍然不会产生新的链接。这就很尴尬了。
            var data=ev.dataTransfer.getData("Text");
            //通过 dataTransfer.getData("Text") 方法获得被拖的数据,该方法将返回在 setData() 方法中设置为相同类型的任何数据。就是说会获得TEXT类型那个数据的ID
            ev.target.appendChild(document.getElementById(data));
            //appendChildID) 将IDdata这个数的元素 放置到ev.target上,也就是div1上。
        }
    </script>

</head>
<body>
<p>把图片拖放至下面的框内</p>

<div id="div1" οndrοp="drop(event)" οndragοver="allowDrop(event)" ></div>
<!--οndragοver="xx(event)" 规定在何处放置被拖拽的元素 ,参数是event说明传入的是事件本身-->
<!--οndrοp="xxx(event)" 是当放置被拖拽的元素时执行函数-->

</br>

<img id="drag1"
     draggable="true"
     οndragstart="drag(event)"
     src="w3school_banner.gif"/>
<!--draggable="true" 将其设置成可拖拽-->
<!--οndragstart="xxx(event)" 规定了被拖拽的元素 以及被拖拽时发生的函数-->
<!--img标签不需要结束标签,一个就够了-->

</body>
</html>



解释如下:

body标签里有两个标签

一个div 一个img

<div id="div1" οndrοp="drop(event)" οndragοver="allowDrop(event)" ></div>
<!--οndragοver="xx(event)" 规定在何处放置被拖拽的元素 ,参数是event说明传入的是事件本身-->
<!--οndrοp="xxx(event)" 是当放置被拖拽的元素时执行函数-->
id="div1" 是设置这个div的id,

这个div的格式由在head里的style标签来设置。

<style type="text/css">
    #div1 {
        width: 488px;
        height: 100px;
        padding: 10px;
        border: 5px black solid;
    }
</style>
<!--定义样式/CSS
   padding 是内边距,增大可以增加整个方形div的大小
   border 是边框的属性 10px是边框线的粗细, yellow设置颜色, solid设置为显示
   -->



</br>
换行标签



<img id="drag1"
     draggable="true"
     οndragstart="drag(event)"
     src="w3school_banner.gif"/>
<!--draggable="true" 将其设置成可拖拽-->
<!--οndragstart="xxx(event)" 规定了被拖拽的元素 以及被拖拽时发生的函数-->
<!--img标签不需要结束标签,一个就够了-->
src是规定图片位置。



函数写在script标签里,script标签写在了head里,也可以写在body里。

<script type="text/javascript">
    function allowDrop(ev) {
        ev.preventDefault(); //默认是不能将一个元素拖拽放到另外一个元素上,需要阻止这种默认形式。
    }

    function drag(ev){
        ev.dataTransfer.setData("Text",ev.target.id); //拖拽发生时,会给被拖拽的元素 一个类型,一个值。
        // Text是类型,ev.target.id是值。ev是本事件,ev.target是事件所在的元素,ev.target.id是元素的ID
    }

    function drop(ev){
        ev.preventDefault(); //W3S的解释是默认是以链接形式打拖拽后的效果,阻止默认,就会在原界面中产生效果。 但是注释掉这行,仍然不会产生新的链接。这就很尴尬了。
        var data=ev.dataTransfer.getData("Text");
        //通过 dataTransfer.getData("Text") 方法获得被拖的数据,该方法将返回在 setData() 方法中设置为相同类型的任何数据。就是说会获得TEXT类型那个数据的ID
        ev.target.appendChild(document.getElementById(data));
        //appendChildID) 将IDdata这个数的元素 放置到ev.target上,也就是div1上。
    }
</script>
div img标签里的函数,都写在这里。



具体效果如下






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值