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>

时间: 2024-10-06 00:27:51

jquery实战——弹出框拖拽效果的相关文章

jQuery实现弹出框拖拽

主要应用jQuery的on和off方法实现在 mousedown 的情况下进行mousemove. 其他:$(window).width() .$(window).height() ---- 获取浏览页面的宽高. pageX.pagerY(ie8不兼容)或 clientX.clientY --------- 获取鼠标当前位置的横轴纵轴. offset().left.offset().top------------------------- div距离左边界的长度和上边界的长度. 下面是简易实现方

js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .

js简单显示和隐藏div 01.<!DOCTYPE html> 02.<html> 03.<head> 04.<meta charset="UTF-8"> 05.<title>Insert title here</title> 06.<script type="text/javascript"> 07. window.onload=function(){ 08. document.g

jquery制作弹出层带遮罩效果,点击阴影部分层消失

jquery制作弹出层带遮罩效果,点击阴影部分层消失. 整体还是比较简单的. HTML代码很简单 1 <a href="#" class="big-link" data-reveal-id="myModal" data-animation="fade">jquery点我弹出</a> 2 <div id="myModal" class="reveal-modal&quo

jQuery+css3弹出框插件

先来看DEMO:https://codepen.io/jonechen/pen/regjGG 插件的开发很简单,运用了CSS3的动画效果,并且弹出框的内容可以自定义.插件的默认配置参数有三个: var defaults = { event: 'click', // 默认点击事件 dialogBox: 'selector', // 弹出框容器 hover: false, // 默认滑动事件关闭 } CSS部分: *{padding: 0; margin: 0; list-style: none;f

WPF Popup弹出框箭头自动定位效果

在WPF中如何做到,点击按钮,弹出一个带箭头的消息框,箭头对准按钮,效果如图所示. XAML代码 <Button Grid.Row="1" Grid.Column="1" x:Name="button" Content="..." HorizontalAlignment="Right" Margin="0,0,100,0" VerticalAlignment="Top&q

弹出层拖拽案例

style代码 <style> * { margin: 0; padding: 0; } .login-header { width: 100%; text-align: center; height: 30px; font-size: 24px; line-height: 30px; } ul, li, ol, dl, dt, dd, div, p, span, h1, h2, h3, h4, h5, h6, a { padding: 0px; margin: 0px; } .login {

jquery弹出层拖拽

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type="text/css">

jquery Bootstrap 弹出框(Popover)显示html内容,URL,div等

实现效果: 其实有个关键点: data-container="body" data-html="true" 注意下就可以了 <button type="button" class="btn btn-success" title="Popover title" data-container="body" data-html="true" data-toggle=&

jquery UI 弹出框

2015-07-17 11:04:38 1 <div id="reg"></div> 2 <script type="text/javascript"> 3 var dg = $("#reg").dialog( 4 { 5 autoOpen:false, 6 // modal:true, 7 show:"blind", // clip,drop,explode,fold,puff,slide