关于利用jQuery插件实现盒子的拖拽

首先,先写一个盒子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>拖拽盒子</title>
		<script type="text/javascript" src="js/jquery-1.11.0.js" ></script>
		<script type="text/javascript" src="js/dragDiv.js" ></script>
		<style>
			*{
				margin: 0px;
			}
			#box{
				position: absolute;
				width: 150px;
				height: 150px;
				text-align: center;
				line-height: 150px;
				background: indianred;
				border-radius: 10px;
			}
		</style>
	</head>
	<body>
		<div id="box">拖动</div>
		
		

盒子完成后就可以写插件了。---------------------

插件代码如下:

;(function($){
	$.fn.dragDiv=function(options){
//		alert(123)
		var deafults = {
			"background":"red"
		}
		var settings = $.extend(deafults,options);
//		console.log(settings)
		this.each(function(e){
			//拖得逻辑
			$(function(){
				$("#box").mousedown(function(e){
				var disX = e.pageX - $("#box").offset().left
				var disY = e.pageY - $("#box").offset().top
//				console.log(disX)
				$(document).mousemove(function(e){
					var l = e.pageX - disX
					var t = e.pageY - disY
					console.log($(window).height())
					if(l<0){
						l = 0
					}
					if(t<0){
						t = 0
					}
					if(t>$(window).height()-$("#box").height()){
						t = $(window).height()-$("#box").height()
					}
					if(l>$(window).width()-$("#box").width()){
						l = $(window).width()-$("#box").width()
					}
					$("#box").css({
						"background":settings.background,
						"left":l,
						"top":t
					})
				})
				$(document).mouseup(function(){
					$(document).off("mousemove")
				})
				
			})
			})
			
		})
		
	}
	
})(jQuery)

-------------插件代码分析:---------------

首先一开始套用插件的模板样式。如下:

;(function($){
    $.fn.dragDiv=function(options){
        var defaults={
         
        }
        
        var options=$.extend(defaults,options);
        this.each(function(){
            var _this = $(this)
            
          
        })

    
    }
    
    
})(jQuery)

-----注意:要注重命名的规范性  以及  分清this指的是谁,搞清此this的对象

------然后继续分析:

var deafults = {
            "background":"red"
        }

此代码的意思是给该盒子的默认颜色为红色。(当然你也可以在调用的样式的时候给他另外换一个颜色)。

------然后就是拖动盒子的逻辑了:请看以下代码。

$(function(){
                $("#box").mousedown(function(e){
                var disX = e.pageX - $("#box").offset().left
                var disY = e.pageY - $("#box").offset().top
//                console.log(disX)

------盒子移动位置偏移------


                $(document).mousemove(function(e){
                    var l = e.pageX - disX
                    var t = e.pageY - disY
                    console.log($(window).height())
                    if(l<0){
                        l = 0
                    }
                    if(t<0){
                        t = 0
                    }
                    if(t>$(window).height()-$("#box").height()){
                        t = $(window).height()-$("#box").height()
                    }
                    if(l>$(window).width()-$("#box").width()){
                        l = $(window).width()-$("#box").width()
                    }

------计算出盒子拖拽可移动的范围,即系窗口的宽高度-----


                    $("#box").css({
                        "background":settings.background,

-----调用默认颜色以外的其他颜色----


                        "left":l,
                        "top":t
                    })
                })
                $(document).mouseup(function(){
                    $(document).off("mousemove")
                })
                

-----鼠标点击离开后停止盒子拖拽的移动----


            })
            })

-----------------------------------------------------------------

插件代码完成后就是插件的调用了:代码如下。

<script>
    $(document).ready(function() {
				$("#box").dragDiv({
					"background":"blue"
				})
				})
		
</script> 

 预加载完成后就可以实现盒子拖拽的移动啦,赶紧来试试吧!!!

效果展示图如下:

--------------谢谢--------------!

猜你喜欢

转载自blog.csdn.net/this_name_true/article/details/82496772