zoukankan      html  css  js  c++  java
  • jquery实战——弹出框拖拽效果

    今天主要记录一下弹出框拖拽效果:

    一、移动弹出窗口的步骤是:按下鼠标左键——移动鼠标——松开鼠标左键停止移动

    二、主要思想:

    按下鼠标左键:$('div').mousedown(function(e){})

    移动鼠标,获取鼠标当前坐标值:$(document).mousemove(function(e){})

    松开鼠标左键停止移动:$('div').mouseup(function(e){

    $(document).unbind('mousemove');  //即当鼠标左键被释放时解除mousemove事件

    })

    需要注意的是,鼠标按下的时候相对于div左上角的位置是不变的,所以在移动的时候,div的left和top值要做相应的处理(具体参见代码说明)

    三、最后,div在移动的过程中要防止它移动出可视窗口,因此应做以下处理:

    禁止从左边移出:

    if(x<0){

    x=0;

    }

    禁止从右边移出:

    if(x>$(document).width()-$('div').outerWidth(true))

    {

    x=$(document).width()-$('div').outerWidth(true);

    }

    禁止从顶部移出:

    if(y<0){

    y=0;

    }

    禁止从底部移出:

    if(y>$(document).height()-$('div').outerHeight(true)){

    y=$(document).height()-$('div').outerHeight(true);

    }

    详细代码参加以下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>jquery拖拽功能</title>
    <script src="js/jquery-1.8.3.min.js" type="text/javascript"></script>
    <style type="text/css">
    *{ margin:0; padding:0;}
    div{ width:100px; height:100px; background:#F00; cursor:move; left:0; top:0; position:absolute;}
    </style>
    </head>
    
    <body>
    <!--
    拖拽功能
    拖拽即为改变left值和top值
    移动窗口的步骤:按下鼠标左键——移动鼠标——松开鼠标停止移动
    -->
    <div></div>
    </body>
    <script type="text/javascript">
    $(function(){
        //首先获取鼠标位置 x坐标:e.pageX和y坐标:e.pageY
        $('div').mousedown(function(e){
        //拖动时鼠标相对于div左上角的left值和top值是不变的
        //要求黑色线段,则用:绿色线段-红色线段
        var positionDiv = $(this).offset();
        var distenceX = e.pageX - positionDiv.left;
        var distenceY = e.pageY - positionDiv.top;
        
          $(document).mousemove(function(e){
              var x=e.pageX-distenceX;
              var y=e.pageY-distenceY;
              //使div在可视窗口内拖动
              if(x<0){ //防止左边移出可视窗口
                x=0;  
               }else if(x>$(document).width()-$('div').outerWidth(true)){ //防止右边移出可视窗口
                  x=$(document).width()-$('div').outerWidth(true);
               }
               if(y<0) //防止顶部移出可视窗口
               {
                 y=0;
               }else if(y>$(document).height()-$('div').outerHeight(true)){ //防止底部移出可视窗口
                 y=$(document).height()-$('div').outerHeight(true);
               }
              //step2:将x坐标和y坐标赋值给div 
              $('div').css({
                'left':x+'px',
                'top':y+'px'    
              });    
          });
        });
        $('div').mouseup(function(){//当鼠标左键被释放时
              $(document).unbind('mousemove');//解除mousemove事件(unbind规定从指定元素上删除的一个或多个事件处理程序。如果没有规定参数,unbind() 方法会删除指定元素的所有事件处理程序。)
            //除了unbind()外 .off()也可以用于解除事件  高版本的jquery库不兼容低版本的jquery库的方法
        });
        
        
    });
    //step3:移动窗口的步骤:按下鼠标左键——移动鼠标
    </script>
    </html>
    View Code
  • 相关阅读:
    js点击左右滚动+默认自动滚动类
    左右箭头+按钮+左右滑动幻灯
    超酷视频播放器详细地址
    经典123幻灯切换
    js左右滚动幻灯
    js数组操作
    js删除数据的几种方法
    【转】MySQL的各种timeout
    Mysql 分段统计
    【转】linux yum命令详解
  • 原文地址:https://www.cnblogs.com/cacti/p/5045172.html
Copyright © 2011-2022 走看看