原生js/jquery 實現拖拽功能

原生JS實現 

<!doctype html>
<html>

	<head>
		<meta charset="utf-8">
		<title>拖拽功能</title>
	</head>

	<body>
		
		
		<div style="width:100px;height: 100px;background-color: red;
		position:absolute;left:0;top:0;"></div>
		
		<script type="text/javascript">
			    //獲得div
			var div = document.getElementsByTagName('div')[0];

			drag(div);
			
			
			function drag(elem) {
				var disX,
					disY;
		
				elem.onmousedown = function (e) {
					//兼容性操作
					var event = e || window.event;
					//鼠標按下的時候,距離元素的左/上距離     
					disX = event.pageX - parseInt(elem.style.left);     //elem.style.left  返回的是字符串 XXXpx,
					disY = event.pageY - parseInt(elem.style.top);		//用parseInt方法可以將數字提取出來
					
					document.onmousemove = function (e) {
						
						var event = e || window.event;
								//鼠標按下的點(相對document) - 鼠標按下的點(相對當前點擊的元素) 
						elem.style.left = event.pageX - disX + "px";
						elem.style.top = event.pageY - disY + "px";
					}
					//當鼠標按上時,使move事件失效,這樣元素就不會再跟着移動了
					document.onmouseup = function(e){
						document.onmousemove = null;
					}
				}
			}
		</script>
	</body>

</html>

 

Jquery實現 

<!doctype html>
<html>

	<head>
		<meta charset="utf-8">
		<title>拖拽功能</title>
		<script src="js/jquery-3.1.0.js"></script>
	</head>

	<body>
		
		
		<div style="width:100px;height: 100px;background-color: red;
		position:absolute;left:0;top:0;"></div>
		
		<script type="text/javascript">
			//獲得div
			var div = $("div");


			drag(div);
			
			
			function drag(elem) {
				var disX,
					disY;
		
				elem.mousedown(function(e){
					
					//兼容性操作
					var event = e || window.event;
					//鼠標按下的時候,距離元素的左/上距離     
					disX = event.pageX - parseInt(elem.offset().left);     //elem.style.left  返回的是字符串 XXXpx,
					disY = event.pageY - parseInt(elem.offset().top);		//用parseInt方法可以將數字提取出來
					
					
					document.onmousemove = function (e) {
						
						var event = e || window.event;
								//鼠標按下的點(相對document) - 鼠標按下的點(相對當前點擊的元素) 
						elem.offset({top: event.pageY - disY, left: event.pageX - disX});
					}
					//當鼠標按上時,使move事件失效,這樣元素就不會再跟着移動了
					document.onmouseup = function(e){
						document.onmousemove = null;
					}
				});
				
			}
		</script>
	</body>

</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章