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 相关文章推荐
基于jquery用于查询操作的实现代码
May 10 Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 Javascript
浅谈javascript事件取消和阻止冒泡
May 26 Javascript
移动端JQ插件hammer使用详解
Jul 03 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
Sep 19 Javascript
移动手机APP手指滑动切换图片特效附源码下载
Nov 30 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
Aug 02 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
纯js实现隔行变色效果
Nov 29 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
基于axios 的responseType类型的设置方法
Oct 29 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中unserialize返回false的解决方法
2014/09/22 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
Python  连接字符串(join %)
2008/09/06 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
Python之pymysql的使用小结
2019/07/01 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
2015元旦主持词开场白和结束语
2014/12/14 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
音乐之声观后感
2015/06/04 职场文书
付款证明格式范文
2015/06/19 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
Python数据处理的三个实用技巧分享
2022/04/01 Python