HTML5拖拽

	<pre>
		     
					</script>
					</head>
					<body>
					   HTML5 拖放(Drag 和 Drop)  drag:拖  drop:落下
			拖放(Drag 和 drop)是 HTML5 标准的组成部分。	
			拖放
				拖放是一种常见的特性,即抓取对象以后拖到另一个位置。
				在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。		
			浏览器支持					
				Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持拖动。
				
				注意:Safari 5.1.2不支持拖动.				
			
			实现拖放:
				
				要拖放的目的元素:<img id="drag1" src="/images/logo.png" width="336" height="69">
				是一个图片
				
				上面的属性:  是否可拖拽   draggable="true"
				
				上面的事件:
					ondragstart="drag(event)"
					
					ondragstart事件:
					
					drag(event)事件:
									function drag(ev)
									{
										ev.dataTransfer.setData("Text",ev.target.id);
									}
					
				<img id="drag1" src="/images/logo.png" draggable="true" ondragstart="drag(event)" width="336" height="69">
				
				要拖到的目的区域: <div id="div1"></div>
				<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
				
				要拖拽到的区域上的事件:
					ondrop事件:
					
					
					drop(event):
								function drop(ev)
								{
									ev.preventDefault();
									var data=ev.dataTransfer.getData("Text");
									ev.target.appendChild(document.getElementById(data));
								}
					
					ondragover事件:
					
					
					allowDrop(event):
									function allowDrop(ev)
									{
										ev.preventDefault();
									}
							
				1.draggable='true' 把要拖放的元素的draggable 设为true  可拖放
				2.拖动什么 - ondragstart 和 setData()
					然后,规定当元素被拖动时,会发生什么
					ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。
					dataTransfer.setData() 方法设置被拖数据的数据类型和值:
					
					function drag(ev)
					{
						ev.dataTransfer.setData("Text",ev.target.id);
					}
					Text 是一个 DOMString 表示要添加到 drag object 的拖动数据的类型。值是可拖动元素的 id ("drag1")。
					
				3.放到何处 - ondragover
					ondragover 事件规定在何处放置被拖动的数据。
					默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。
					通过调用 ondragover 事件的 event.preventDefault() 方法:
					event.preventDefault()
				4.进行放置 - ondrop
					当放置被拖数据时,会发生 drop 事件。
					ondrop 属性调用了一个函数,drop(event):
					function drop(ev)
					{	//被拖数据是被拖元素的 id ("drag1")
					    ev.preventDefault();  //避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
					    var data=ev.dataTransfer.getData("Text");  //通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
					    ev.target.appendChild(document.getElementById(data)); //把被拖元素追加到放置元素(目标元素)中
					}
					
					eg:图片在两个框之间来回拖
				
					function allowDrop(ev)
					{
						ev.preventDefault();
					}
					
					function drag(ev)
					{
						ev.dataTransfer.setData("Text",ev.target.id);
					}
					
					function drop(ev)
					{
						ev.preventDefault();
						var data=ev.dataTransfer.getData("Text");
						ev.target.appendChild(document.getElementById(data));
					}
					<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
						<img src="img_w3slogo.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31"></div>
					<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
					
					</body>
					
				eg:把图拖进框里
					
				function allowDrop(ev)
				{
				    ev.preventDefault();
				}
				 
				function drag(ev)
				{
				    ev.dataTransfer.setData("Text",ev.target.id);
				}
				 
				function drop(ev)
				{
				    ev.preventDefault();
				    var data=ev.dataTransfer.getData("Text");
				    ev.target.appendChild(document.getElementById(data));
				}
				</script>
				</head>
				<body>
				 
				<p>拖动 RUNOOB.COM 图片到矩形框中:</p>
				 
				<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
				<br>
				<img loading="lazy" id="drag1" src="/images/logo.png" draggable="true" ondragstart="drag(event)" width="336" height="69">
				 
				</body>
				
					
	

		<div id="box2" ondragover="allowDrop(event)" ondrop='drop(event)'></div> 
		 <!--ondragover="allowDrop(event) 默认不许拖拽 改成禁止默认  ondrop='drop(event)' 
		 ev.preventDefault();   被拖数据是被拖元素的 id
		 var data = ev.dataTransfer.getData('Text');   ev.target.appendChild(document.getElementById(data)) 
		 //通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
		 //把被拖元素追加到放置元素(目标元素)中
		 -->
		<img src="wei.png" draggable="true" ondragstart="drag(event)" id="imgggg">  
                    <!--draggable="true" 允许拖拽  ondragstart="drag(event)"  dataTransfer.setData() 方法设置被拖数据的数据类型和值:-->
		<div id="box1" ondragover="allowDrop(event)" ondrop='drop(event)'></div>	
	
	<script type="text/javascript">
		function drag(ev){
			ev.dataTransfer.setData('Text',ev.target.id)
		}
		function allowDrop(ev){
			ev.preventDefault()
		}
		function drop(ev){
			ev.preventDefault();
			var data = ev.dataTransfer.getData('Text');
			ev.target.appendChild(document.getElementById(data))
		}
	</script>
posted @ 2021-02-07 17:44  灰萝卜兔  阅读(253)  评论(0)    收藏  举报