JavaScript简单实现弹出拖拽窗口(一)


Posted in Javascript onJune 17, 2016

本文实例为大家分享JavaScript弹出拖拽窗口的具体实现代码,供大家参考,具体内容如下

需求说明:
 1、点击页面按钮,弹出窗口;
 2、要有半透明背景遮罩;
 3、弹出窗口圆角,窗口半透明,但内容不透明;带阴影;
 4、窗口可拖动;
 5、拖动停止之后,滚动页面时窗口位置不动;
 6、可以使用jQuery;
 7、有关闭按钮;
 进一步功能具体描述
 点按钮,会有一个可以拖拽的浮层出来。
 有一个背景遮罩,支持标题栏的拖拽,在标题栏以外,在标题栏区域之外的区域拖拽是没有效果的,拖拽功能限定,他的拖拽功能被限定在可是可视区域内。
 拖曳的思路:
 获取鼠标的位置,鼠标移动的时候,获取鼠标的位置,获取x轴y轴,赋给窗口的x轴y轴,窗口弄成绝对定位。鼠标松开的时候把这个事件取消掉。
 拖拽的实现原理:
 鼠标移动的时候,拿鼠标移动时的坐标位置不断更新浮层的position。
 1.鼠标在浮层元素按下的时候,把这个浮层元素标记为可以拖动。
 2.鼠标移动的时候,我们先检测一下浮层元素标记的波动是不是可以拖动。如果是的话,让浮层跟着鼠标一起移动,不是的话就忽略。
 3.鼠标松开的时候标记浮层元素不可以拖动
 4.js拖拽主要用到了鼠标三个事件:mousedown、mousemove、mouseup。
 mousedown:鼠标按下
 mouseup:鼠标松开
 mousemove:鼠标移动
 备注:mousedown和click的区别:鼠标点击的整个过程会发生 mousedown→mouseup→click三个事件, click在最后鼠标松开之后才会发生。
 说到这里,我们就不得不讲一下鼠标事件。
 下面简单的讲一下鼠标事件:
 (1)click事件 
 (2)dbclick事件 
 (3)mousedown事件
 (4)mouseup事件
 (5)mouseenter事件
 (6)mouseover事件
 (7)mouseleaver事件
 (8)mouseout事件
 解释:(鼠标事件的解释说明选自w3school) 
(1)click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发。 
(2) dbclick事件:当双击元素时,会发生 dblclick 事件。当鼠标指针停留在元素上方,然后按下并松开鼠标左键时,就会发生一次 click。在很短的时间内发生两次 click,即是一次 double click 事件。
 实例:
 当双击按钮时,隐藏或显示元素:

$(document).ready(function(){
   $("button").dblclick(function(){
     $("p").slideToggle();
   });
 });

(3)mousedown事件:当鼠标指针移动到元素上方,并按下鼠标按键时,会发生mousedown 事件。与 click 事件不同,mousedown 事件仅需要按键被按下,而不需要松开即可发生。

$(document).ready(function(){
   $("button").mousedown(function(){
    $("p").slideToggle();
  });
});

(4)mouseup事件:当在元素上放松鼠标按钮时,会发生 mouseup 事件。
 与 click 事件不同,mouseup 事件仅需要放松按钮。当鼠标指针位于元素上方时,放松鼠标按钮就会触发该事件。

$(document).ready(function(){
  $("button").mouseup(function(){
     $("p").slideToggle();
   });
});

(5)mouseenter事件:当鼠标指针穿过元素时,会发生 mouseenter 事件。该事件大多数时候会与 mouseleave 事件一起使用。
 注释:与 mouseover 事件不同,只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。如果鼠标指针穿过任何子元素,同样会触发 mouseover 事件。
 (6)mouseover事件:当鼠标指针位于元素上方时,会发生 mouseover 事件。该事件大多数时候会与 mouseout 事件一起使用。
 注释:与 mouseenter 事件不同,不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

$(document).ready(function(){
  $("p").mouseover(function(){
    $("p").css("background-color","yellow");
  });
  $("p").mouseout(function(){
    $("p").css("background-color","#E9E9E4");
  });
});

mouseenter 与 mouseover 的不同

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
  x=0;
  y=0;
  $(document).ready(function(){
     $("div.over").mouseover(function(){
        $(".over span").text(x+=1);
     });
     $("div.enter").mouseenter(function(){
        $(".enter span").text(y+=1);
     });
  });
</script>
</head>
<body>
  <p>不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。</p>
  <p>只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。</p>
  <div class="over" style="background-color:lightgray;padding:20px;width:40%;float:left">
  <h2 style="background-color:white;">被触发的 Mouseover 事件:<span></span></h2>

</div>
  <div class="enter" style="background-color:lightgray;padding:20px;width:40%;float:right">
  
<h2 style="background-color:white;">被触发的 Mouseenter 事件:<span></span></h2>
  </div>
</body>
</html>

JavaScript简单实现弹出拖拽窗口(一)

(7)mouseleaver事件:当鼠标指针穿过元素时,会发生 mouseenter 事件。
 该事件大多数时候会与 mouseleave 事件一起使用。
 注释:与 mouseout 事件不同,只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。如果鼠标指针离开任何子元素,同样会触发 mouseout 事件。
 (8)mouseout事件
 当鼠标指针从元素上移开时,发生 mouseout 事件。
 该事件大多数时候会与 mouseover 事件一起使用。
 注释:与 mouseleave 事件不同,不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
 请看下面例子的演示。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
x=0;

y=0;

$(document).ready(function(){
 

$("div.out").mouseout(function(){
  


$(".out span").text(x+=1);
 

});
 

$("div.leave").mouseleave(function(){
  


$(".leave span").text(y+=1);
 

});

});
</script>
</head>
<body>

<p>不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。</p>

<p>只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。</p>

<div class="out" style="background-color:lightgray;padding:20px;width:40%;float:left">


<h2 style="background-color:white;">被触发的 Mouseout 事件:<span></span></h2>

</div>

<div class="leave" style="background-color:lightgray;padding:20px;width:40%;float:right">


<h2 style="background-color:white;">被触发的 Mouseleave 事件:<span></span></h2>

</div>
</body>
</html>

JavaScript简单实现弹出拖拽窗口(一)

注意:本文为原创,地址:http://www.cnblogs.com/wanghuih/p/5569438.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JSP跨iframe如何传递参数实现代码
Sep 21 Javascript
登陆成功后自动计算秒数执行跳转
Jan 23 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
基于jQuery实现滚动切换效果
Dec 02 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
Jun 19 Javascript
jQuery基于cookie实现换肤功能实例
Oct 14 jQuery
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
vue实现添加与删除图书功能
Oct 07 Javascript
在vue中使用echarts图表实例代码详解
Oct 22 Javascript
微信小程序实现登录遮罩效果
Nov 01 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
Jun 17 #Javascript
聊一聊JS中this的指向问题
Jun 17 #Javascript
json实现添加、遍历与删除属性的方法
Jun 17 #Javascript
confirm确认对话框的实现方法总结
Jun 17 #Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 #Javascript
jQuery1.9+中删除了live以后的替代方法
Jun 17 #Javascript
基于JQuery实现分隔条的功能
Jun 17 #Javascript
You might like
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
vue使用nprogress加载路由进度条的方法
2020/06/04 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
python爬虫基础知识点整理
2020/06/02 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
市场营销专业个人自荐信格式
2013/09/21 职场文书
电子商务专员岗位职责
2013/12/11 职场文书
运动会入场解说词
2014/02/07 职场文书
交通事故调解协议书
2014/04/16 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
创先争优承诺书
2015/01/20 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
python tqdm用法及实例详解
2021/06/16 Python
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android