HTML页面弹出居中可拖拽的自定义窗口层_jquery

使用DIV弹出窗口来动态显示内容的原理:首先采用CSS和HTML隐藏弹窗中的内容,然后利用JavaScript(本教程中是JQuery)来动态显示它们。这种效果不仅能够充分利用有限的版面空间,而且能够提高用户体验;更重要的是,它并不影响SEO效果(因为它实际存在于页面中,只是初始为不可见状态)

1、在html页面中定义一个div,并在div实现我们需要展示的内容。

复制代码 代码如下:

<body>
<div id="login">
<h2><img src="images/close.png" alt="" class="close" />网站登录</h2>
<form id="loginForm" >
<div class="info"></div>
<div class="user">帐 号:<input type="text" name="user" class="text" /></div>
<div class="pass">密 码:<input type="password" name="pass" class="text" /></div>
<div class="button"><input type="button" name="sub" class="submit" value="" /></div>
</form>
<div class="other">注册新用户 | 忘记密码?</div>
</div>
</body>

一图抵千言。让我们看看这个DIV弹出窗口的效果截图:
 
2、我所用的CSS样式

复制代码 代码如下:

#login {
width:350px;
height:250px;
border:1px solid #ccc;
position:absolute;
display:block;
z-index:9999;
background:#fff;
}
#login h2 {
height:40px;
line-height:40px;
text-align:center;
font-size:14px;
letter-spacing:1px;
color:#666;
background:url(images/login_header.png) repeat-x;
margin:0;
padding:0;
border-bottom:1px solid #ccc;
cursor:move;
}
#login h2 img {
float:right;
position:relative;
top:14px;
right:8px;
cursor:pointer;
}
#login div.info {
padding:10px 0 5px 0;
text-align:center;
color:maroon;
}
#login div.user, #login div.pass {
font-size:14px;
color:#666;
padding:5px 0;
text-align:center;
}
#login input.text {
width:200px;
height:25px;
border:1px solid #ccc;
background:#fff;
font-size:14px;
}
#login .button {
text-align:center;
padding:15px 0;
}
#login input.submit {
width:107px;
height:30px;
background:url(images/login_button.png) no-repeat;
border:none;
cursor:pointer;
}
#login .other {
text-align:right;
padding:15px 10px;
color:#666;
}

这里面主要注意的是关于div样式的定义,因为需要居中展示我们使用绝对定位position:absolute;其次因为是弹出层,div必须在最外围,所以通常把z-index设置的非常大,这里我们设置为z-index:9999;还有一点是关于div本身是隐藏的需要设置为display:none,但这里我们需要直接看效果所以直接让它展现使用display:block;

3、我们需要让它居中展示,那么首先就必须获取浏览器的高度和宽度,如果有滚动条的水平或者竖向偏移,还需要获取那个长度,通过计算获取div应该浏览器的位置。

复制代码 代码如下:

$(document).ready(function()
{
jQuery.fn.extend({
center:function(width,height)
{
return $(this).css("left", ($(window).width()-width)/2+$(window).scrollLeft()).
css("top", ($(window).height()-height)/2+$(window).scrollTop()).
css("width",width).
css("height",height);
}
});
});

通过点击按钮让它展现

复制代码 代码如下:

$(".login").click(function ()
{
$("#login").show().center(350,250);//展现登陆框
});

效果图
 
4、能对弹出框进行拖拽

代码实现

复制代码 代码如下:

$(document).ready(function()
{
jQuery.fn.extend({
//拖拽功能
drag:function(){
var $tar = $(this);
return $(this).mousedown(function(e){
if(e.target.tagName =="H2"){
var diffX = e.clientX - $tar.offset().left;
var diffY = e.clientY - $tar.offset().top;
$(document).mousemove(function(e){
var left = e.clientX - diffX;
var top = e.clientY - diffY;
if (left < 0){
left = 0;
}
else if (left <= $(window).scrollLeft()){
left = $(window).scrollLeft();
}
else if (left > $(window).width() +$(window).scrollLeft() - $tar.width()){
left = $(window).width() +$(window).scrollLeft() -$tar.width();
}
if (top < 0){
top = 0;
}
else if (top <= $(window).scrollTop()){
top = $(window).scrollTop();
}
else if (top > $(window).height() +$(window).scrollTop() - $tar.height()){
top = $(window).height() +$(window).scrollTop() - $tar.height();
}
$tar.css("left",left + 'px').css("top",top + 'px');
});
}
$(document).mouseup(function(){
$(this).unbind("mousemove");
$(this).unbind("mouseup")
});
});
}
});

});

这里我们只针对div内容中的H2元素可供点击拖拽,如果需要全局div可进行修改,拖拽原理:当鼠标在指定元素上的按下时,获取该鼠标点坐标,通过计算,把图片也移动到相对应的位置,一旦鼠标点击取消,相对应的按下事件也随之取消,页面静止。

调用拖拽方法

复制代码 代码如下:

$("#login").drag();

现在我们可以点击弹出框的标题栏随意对其在浏览器中拖拽了。

时间: 2024-11-18 04:17:04

HTML页面弹出居中可拖拽的自定义窗口层_jquery的相关文章

js+CSS实现弹出居中背景半透明div层的方法

 这篇文章主要介绍了js+CSS实现弹出居中背景半透明div层的方法,涉及javascript操作弹出div层的操作技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了js+CSS实现弹出居中背景半透明div层的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1

Ajax加载外部页面弹出层效果实现方法_AJAX相关

本文实例讲述了Ajax加载外部页面弹出层效果实现方法.分享给大家供大家参考.具体实现方法如下: <!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">

js里写一个当前页面弹出登陆框,用来输入用户名和密码并传到另一个页面的方法,求相助!

问题描述 js里写一个当前页面弹出登陆框,用来输入用户名和密码并传到另一个页面的方法,求相助! 解决方案 纯js拼页面--那就在table外面拼个form,加上action等属性 form里再加submit的input点击input,form直接提交到后台,自己后台处理跳转:想直接跳,那就js拿到用户名和密码,直接url带参数传过去window.location.href=""跳转页面?用户名=值&密码=值""

弹出页面-如何实现JSP页面弹出对话框后,还能在原页面操作?

问题描述 如何实现JSP页面弹出对话框后,还能在原页面操作? 点击"导出协议",会弹出一个对话框,此时页面无法做任何操作. 现在需要修改的是,弹出对话框以后,原页面可以做别的操作. 但是重复点击同一条数据的"导出协议"时,会弹出一个提示"操作重复"的对话框. 在JSP页面定义一个全局变量,"导出协议"的时候调用它,然后拿这个变量和数据ID相比较,如果重复则弹出对话框. <td class="td_hand&qu

页面重构-html页面弹出html页面

问题描述 html页面弹出html页面 在html页面点击按钮,然后弹出一个页面,在弹出页面点击提交按钮后,重新回到以前html 页面,并把刚才提交的数据显示出来. 谢谢大神的帮助啊 解决方案 html页面弹出密码框jQuery+css+html实现页面遮罩弹出框.net 如何弹出一个html页面. 解决方案二: 页面的话用iframe做 解决方案三: http://v3.bootcss.com/javascript/#popovers 用这个方式去做一个模态框,然后在里面进行提交,提交之后,在

iframe 嵌套 子页面-html为 iframe子页面 弹出窗口 指定显示位置

问题描述 html为 iframe子页面 弹出窗口 指定显示位置 问题描述: 一个页面a.html中通过iframe内嵌了一个子页面b.html(这个无权修改),b.html中有一个按钮cButton, 点击这个按钮会弹出显示一个表单,现在想让这个弹出的表单显示到a.html中的一个iframe或者div中,请问怎么实现? 解决方案 在点击B的事件中使用调用A的Function.调用示例比如A有一个方法为showForm(),则在B的按钮事件中直接使用Window.Parent.showForm

Easyui 让Window弹出居中

原文:Easyui 让Window弹出居中 easyui1.3.2版本,window的弹出不会居中了.而dialog是会居中的,我们必须为为window的open事件做扩展 代码如下:只要加入以下代码即可.如果你是看了MVC项目系列的,把他放到jquery.easyui.plus.js里面就可以了 //让window居中 var easyuiPanelOnOpen = function (left, top) { var iframeWidth = $(this).parent().parent

js+CSS实现弹出居中背景半透明div层的方法_javascript技巧

本文实例讲述了js+CSS实现弹出居中背景半透明div层的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!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

html-怎么让页面弹出的dialog不影响底层页面布局

问题描述 怎么让页面弹出的dialog不影响底层页面布局 做了个页面,添加和修改,查找都是juqery的dialog弹出,可是dialog淡出的时候,却把主页面的按钮的位置挤到一边去了,有大神能解答下么?非常感谢