mouseup,mousedown,mousemove,弹出框拖动效果,javascript

<script type="text/javascript">
   
  var dialogInstace , onMoveStartId , mousePos = {x:0,y:0}; // 用于记录当前可拖拽的对象
   
  // var zIndex = 9000;
   
  // 获取元素对象
  function g(id){return document.getElementById(id);}
   
  // 自动居中元素(el = Element)
  function autoCenter( el ){
  var bodyW = document.documentElement.clientWidth;
  var bodyH = document.documentElement.clientHeight;
   
  var elW = el.offsetWidth;
  var elH = el.offsetHeight;
   
  el.style.left = (bodyW-elW)/2 + ‘px‘;
  el.style.top = (bodyH-elH)/2 + ‘px‘;
   
  }
   
  // 自动扩展元素到全部显示区域
  function fillToBody( el ){
  el.style.width = document.documentElement.clientWidth +‘px‘;
  el.style.height = document.documentElement.clientHeight + ‘px‘;
  }
   
  // Dialog实例化的方法
  function Dialog( dragId , moveId ){
   
  var instace = {} ;
   
  instace.dragElement = g(dragId); // 允许执行 拖拽操作 的元素
  instace.moveElement = g(moveId); // 拖拽操作时,移动的元素
   
  instace.mouseOffsetLeft = 0; // 拖拽操作时,移动元素的起始 X 点
  instace.mouseOffsetTop = 0; // 拖拽操作时,移动元素的起始 Y 点
   
  instace.dragElement.addEventListener(‘mousedown‘,function(e){
   
  var e = e || window.event;
   
  dialogInstace = instace;
  instace.mouseOffsetLeft = e.pageX - instace.moveElement.offsetLeft ;
  instace.mouseOffsetTop = e.pageY - instace.moveElement.offsetTop ;
   
  onMoveStartId = setInterval(onMoveStart,10);
  return false;
  // instace.moveElement.style.zIndex = zIndex ++;
  })
   
  return instace;
  }
   
  // 在页面中侦听 鼠标弹起事件
  document.onmouseup = function(e){
  dialogInstace = false;
  clearInterval(onMoveStartId);
  }
  document.onmousemove = function( e ){
  var e = window.event || e;
  mousePos.x = e.clientX;
  mousePos.y = e.clientY;
   
   
  e.stopPropagation && e.stopPropagation();
  e.cancelBubble = true;
  e = this.originalEvent;
  e && ( e.preventDefault ? e.preventDefault() : e.returnValue = false );
   
  document.body.style.MozUserSelect = ‘none‘;
  }
   
  function onMoveStart(){
   
   
  var instace = dialogInstace;
  if (instace) {
   
  var maxX = document.documentElement.clientWidth - instace.moveElement.offsetWidth;
  var maxY = document.documentElement.clientHeight - instace.moveElement.offsetHeight ;
   
  instace.moveElement.style.left = Math.min( Math.max( ( mousePos.x - instace.mouseOffsetLeft) , 0 ) , maxX) + "px";
  instace.moveElement.style.top = Math.min( Math.max( ( mousePos.y - instace.mouseOffsetTop ) , 0 ) , maxY) + "px";
   
  }
   
  }
   
   
   
   
   
  // 重新调整对话框的位置和遮罩,并且展现
  function showDialog(){
  g(‘dialogMove‘).style.display = ‘block‘;
  g(‘mask‘).style.display = ‘block‘;
  autoCenter( g(‘dialogMove‘) );
  fillToBody( g(‘mask‘) );
  }
   
  // 关闭对话框
  function hideDialog(){
  g(‘dialogMove‘).style.display = ‘none‘;
  g(‘mask‘).style.display = ‘none‘;
  }
   
  // 侦听浏览器窗口大小变化
  window.onresize = showDialog;
   
  Dialog(‘dialogDrag‘,‘dialogMove‘);
  showDialog();
   
  </script>
时间: 2024-10-28 18:52:20

mouseup,mousedown,mousemove,弹出框拖动效果,javascript的相关文章

适配移动端的简单弹出框居中效果

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 <style type="text/css"> 6 #mask_box { 7 width:100%; 8 height:100%; 9 z-index:9999; 10 position:fixed; 11 top:0; 12 left:0; 13 display: none; 14 } 15 #Dia

弹出框插件

本插件ccShow是用来在前端显示弹出框,用户可以点击按钮,弹出一个框,也可以Ajax请求时,弹出提示语,请求中,等Ajax结束后,就显示已完成或者请求失败等情况.基于jQuery的插件,兼容各种浏览器. var ccShow = {}; var isSetTimeOut=false; var isShow = false, showType = ""; ccShow.showMsg = function (rb, type, willHide,callback,showTime) {

移动端弹出框插件

在H5移动端项目开发过程,肯定会遇到不少与客户打交道的弹出框. 当然基于H5+ API中有提供系统的弹出对话框,虽然能够达到效果,但是实际的美观是几乎不存在的. 应项目需要,草草的写了一个弹出框的效果. 作为程序猿代码是最敏感的,废话也少说了,直接看下面的代码: css代码部分: #lee-mask { background: #000; opacity: 0.7; position: absolute; z-index: 1000; top: 0; left: 0; right: 0; bot

jquery实战——弹出框拖拽效果

今天主要记录一下弹出框拖拽效果: 一.移动弹出窗口的步骤是:按下鼠标左键——移动鼠标——松开鼠标左键停止移动 二.主要思想: 按下鼠标左键:$('div').mousedown(function(e){}) 移动鼠标,获取鼠标当前坐标值:$(document).mousemove(function(e){}) 松开鼠标左键停止移动:$('div').mouseup(function(e){ $(document).unbind('mousemove');  //即当鼠标左键被释放时解除mouse

jquery封装了一个简洁轻巧的可拖动可自定义样式的纯div+css带遮罩层的仿模态弹出框

最近封装上瘾,想起以前做的一个轻巧的弹出框,是样式和脚本分离的,于是重新封装了一下,把样式标签统一到js里了. 里面还有一些问题,但不影响使用,有兴趣的同学,可以参考完善下,有好的建议,请不吝赐教. var PopDialogDefaultConfig = { hasCover: true, //是否带遮罩层 colorOfCover: "#000", //遮罩层颜色 transparencyOfCover: 80, //遮罩层透明度(alpha值,opacity值通过换算得到) bo

鼠标拖动 自定义弹出框

/*设置自定义弹出框可移动*/jQuery(document).ready( function () { $('.popmodal .popheader').mousedown( function (event) { var isMove = true; var abs_x = event.pageX - $(this).offset().left; var abs_y = event.pageY - $(this).offset().top; $(document).mousemove(fun

使用easydrag实现可拖动的DIV弹出框

最近在工作中遇到了jquery的easydrag插件,我有一种相见恨晚的赶脚!easydrag极大的方法我们实现div弹框这个功能,使我爱不释手!在没遇到easydrag插件之前,想实现一个弹出框并不是一件轻而易举的事情!人们常说没有不劳而获的事情,但在编码的世界中却不是这样.更多的开源框架方面了我们,也毒害了我们! 废话少说,先看效果: 全部代码: <!DOCTYPE HTML> <html> <head> <title>easydrag实现可拖动的DIV

安卓开发笔记——PopupWindow,做出如弹出框效果

先看一个效果图 点击按钮后出现一个这么的效果,这个弹出框实现的答题代码如下 先来一个弹出框的布局xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent"

JS组件Bootstrap实现弹出框和提示框效果代码

JS组件Bootstrap实现弹出框和提示框效果代码 作者:懒得安分 字体:[增加 减小] 类型:转载 时间:2015-12-08我要评论 这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编 辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的系统有一个友好的弹出提示框,自然能给用户