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 相关文章推荐
使用TextRange获取输入框中光标的位
Oct 14 Javascript
js相册效果代码(点击创建即可)
Apr 16 Javascript
使用 Node.js 做 Function Test实现方法
Oct 25 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
javascript不同类型数据之间的运算的转换方法
Feb 13 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
js隐式转换的知识实例讲解
Sep 28 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
vuex实现像调用模板方法一样调用Mutations方法
Nov 06 Javascript
js实现自定义右键菜单
May 18 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中定义网站根目录的常用方法
2010/08/08 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
js动态设置div的值下例子
2013/10/29 Javascript
innerText 使用示例
2014/01/23 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
js实现微博发布小功能
2017/01/12 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
vue-resourc发起异步请求的方法
2020/02/11 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Django中几种重定向方法
2015/04/28 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
python与字符编码问题
2019/05/24 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
数控机械专业个人的自我评价
2014/01/02 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
公司授权委托书
2014/04/04 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
2015年副班长工作总结
2015/05/15 职场文书
大学生军训感言
2015/08/01 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python