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 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
jQuery ui 1.7更新小结
Aug 15 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
在父页面得到zTree已选中的节点的方法
Feb 12 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
关于js函数解释(包括内嵌,对象等)
Nov 20 Javascript
移动端日期插件Mobiscroll.js使用详解
Dec 19 Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
Nov 09 Javascript
实现AJAX异步调用和局部刷新的基本步骤
Mar 17 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
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
JS编程小常识很有用
2012/11/26 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
python使用邻接矩阵构造图代码示例
2017/11/10 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
css sprite简单实例
2016/05/23 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
墨西哥网上超市:Superama
2018/07/10 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
数控技术学生的自我评价
2014/02/15 职场文书
保护环境倡议书
2014/04/14 职场文书
健康教育评估方案
2014/05/25 职场文书
销售口号大全
2014/06/11 职场文书
物业消防安全责任书
2014/07/23 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
撤诉书怎么写
2015/05/19 职场文书
妈妈别哭观后感
2015/06/08 职场文书