拖拽弹出框

<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>拖拽效果</title>

<style type="text/css">

body{            background: url(images/baidu_demo.png) no-repeat top center #fff;            padding: 0px;margin: 0px;font-size: 12px;font-family: "微软雅黑";        }

.ui-dialog{            width: 380px;height: auto;display: none;            position: absolute;z-index: 9000;            top: 100px;left: 100px;            border: 1px solid #d5d5d5;background: #fff;        }        .ui-dialog a{ text-decoration: none;}        .ui-dialog-title{            height: 48px;line-height: 48px;padding-left: 20px;color: #535353;font-size: 16px;            background: #f5f5f5;            border-bottom: 1px solid #efefef;            cursor: move;        }        .ui-dialog-title-closebutton{            width: 16px;height: 16px;display: block;            position: absolute;top: 12px;right: 20px;            background: url(images/close_def.png);        }        .ui-dialog-title-closebutton:hover{            background: url(images/close_hov.png);        }        .ui-dialog-content{            padding: 15px 20px;        }

.ui-dialog-pt15{            padding-top: 15px;        }        .ui-dialog-l40{            height: 40px;line-height: 40px;            text-align: right;;        }

.ui-dialog-input{            width: 100%;height: 40px;            margin: 0px;padding: 0px;            border: 1px solid #d5d5d5;            font-size: 16px;color: #c1c1c1;            text-indent: 25px;            outline: none;        }        .ui-dialog-input-username{            background: url(images/input_username.png) no-repeat;        }        .ui-dialog-input-password{            background: url(images/input_password.png) no-repeat;        }

.ui-dialog-submit{            width: 100%;height: 50px;display: block;            font-size: 16px;color: #fff;            background: #3b7ae3;            text-align: center;line-height: 50px;        }        .ui-dialog-submit:hover{            background: #3f81b0;        }

.ui-mask{            width: 100%;height: 100%;background: #000;opacity: 0.4;filter: Alpha(opacity=40);            position: absolute;top: 0px;left: 0px;z-index: 8000;display: none;            -moz-user-select: none;        }

.link{            text-align: right;line-height: 20px;padding-right: 40px;        }

</style>

</head><body >

<div class="ui-dialog" id="dialog">

<div class="ui-dialog-title" id="dialogTitle">        登录通行证        <a href="javascript:hideDialog();" class="ui-dialog-title-closebutton"></a>    </div>    <div class="ui-dialog-content">

<div class="ui-dialog-pt15 ui-dialog-l40">            <input type="text" value="手机/邮箱/用户名" class="ui-dialog-input ui-dialog-input-username">        </div>        <div class="ui-dialog-pt15 ui-dialog-l40">            <input type="text" value="密码" class="ui-dialog-input ui-dialog-input-password">        </div>        <div class=" ui-dialog-l40 ">            <a href="#">忘记密码</a>        </div>        <div>

<a href="#" class="ui-dialog-submit">登录</a>

</div>        <div class="ui-dialog-l40">            <a href="#">立即注册</a>        </div>    </div></div>

<div class="ui-mask" id="mask" onselectstart="return false;"></div><div class="link">    <a href="javascript:showDialog();">登录</a></div>

<script type="text/javascript">

//  获取元素对象    function g(id){ return document.getElementById(id); }

//  自动居中 - 登录浮层 ( el = Elemenet)    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‘;    }

var mouseOffsetX = 0;   //  偏移    var mouseOffsetY = 0;

var isDraging = false;  //  是否可拖拽的标记

//  鼠标事件1 - 在标题栏上按下(要计算鼠标相对拖拽元素的左上角的坐标,并且标记元素为可拖动)    g(‘dialogTitle‘).addEventListener(‘mousedown‘,function(e){        var e = e || window.event;        mouseOffsetX = e.pageX - g(‘dialog‘).offsetLeft;        mouseOffsetY = e.pageY - g(‘dialog‘).offsetTop;        isDraging = true;    })    //  鼠标事件2 - 鼠标移动时(要检测,元素是否可标记为移动,如果是,则更新元素的位置,到当前鼠标的位置[ps:要减去第一步中获得的偏移])    document.onmousemove = function( e ){        var e = e || window.event;

var mouseX = e.pageX;   // 鼠标当前的位置        var mouseY = e.pageY;

var moveX = 0;  //  浮层元素的新位置        var moveY = 0;

if( isDraging === true ){

moveX = mouseX - mouseOffsetX;            moveY = mouseY - mouseOffsetY;

//  范围限定   moveX > 0 并且  moveX < (页面最大宽度 - 浮层的宽度)            //            moveY > 0 并且  movey < (页面最大高度 - 浮层的高度)

var pageWidth  = document.documentElement.clientWidth ;            var pageHeight = document.documentElement.clientHeight ;

var dialogWidth  = g(‘dialog‘).offsetWidth;            var dialogHeight = g(‘dialog‘).offsetHeight;

var maxX = pageWidth - dialogWidth;            var maxY = pageHeight- dialogHeight;

moveX = Math.min( maxX , Math.max(0,moveX) );            moveY = Math.min( maxY , Math.max(0,moveY) );

g(‘dialog‘).style.left = moveX + ‘px‘;            g(‘dialog‘).style.top  = moveY + ‘px‘;        }

}

//  鼠标事件3 - 鼠标松开的时候(标记元素为不可拖动即可)    document.onmouseup = function(){        isDraging = false;    }

//  展现登录浮层    function showDialog(){        g(‘dialog‘).style.display=‘block‘;        g(‘mask‘).style.display = ‘block‘;        autoCenter(g(‘dialog‘));        fillToBody( g(‘mask‘) );    }

//  隐藏登录浮层    function hideDialog(){        g(‘dialog‘).style.display = ‘none‘;        g(‘mask‘).style.display = ‘none‘;    }

window.onresize =function(){        autoCenter(g(‘dialog‘));        fillToBody( g(‘mask‘) );    }</script>

</body></html>
时间: 2024-08-12 13:11:21

拖拽弹出框的相关文章

zDialog 可拖拽弹出层

zDialog弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻,外观漂亮: 兼容ie6/7/8.firefox2/3.Opera:弹出框在ie6下不会被select控件穿透: 无外部css文件,引用Dialog.js即可使用: 对iframe下的应用作了充分考虑,适合复杂的系统应用: Dialog显示的内容(三种):1.指向一个URL的iframe窗口:2.页面内隐藏的元素中的html内容:3.直接输出一段ht

显示遮罩层和弹出框

因为最近用到了遮罩层和弹出框,上网查资料后自己完成了一个,在此做一下记录做保存. 因为用到了jq,所以需要引入jq文件,比如jquery-1.11.3.js 以下是jsp的代码: <body> <div> <input id="button" type="button" value="点击我"> <div class="shareDialog"> <div class=&q

弹出框组件,可拖拽

/** * 弹出框组件 */ (function($) { var Utils = { showMask: function() { var $mask = $("#mask"); if( $mask.length === 0 ) { $('body').prepend("<div id='mask' class='mask'></div>"); } $("#mask").css({ width: Math.max(doc

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

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

jQuery实现弹出框拖拽

主要应用jQuery的on和off方法实现在 mousedown 的情况下进行mousemove. 其他:$(window).width() .$(window).height() ---- 获取浏览页面的宽高. pageX.pagerY(ie8不兼容)或 clientX.clientY --------- 获取鼠标当前位置的横轴纵轴. offset().left.offset().top------------------------- div距离左边界的长度和上边界的长度. 下面是简易实现方

原生js实现拖拽弹框的效果

研究了一上午,模仿了拖拽弹框的效果,小有成就 <script type="text/javascript"> function getByClass(classname,parent){ var par=parent||document, eles=par.getElementsByTagName("*"), needArr=[]; for(var i=0;i<eles.length;i++){ if(eles[i].className==clas

弹出框插件

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

Js弹出层,弹出框代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

原生Js封装的弹出框

<!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>原生Js封装的弹出框-弹出窗口-页面居中-多状态可选</title> <style type="text/css"&