弹出图层的应用相当多。登陆,在同一页上的一些操作,别人永远是别人,自己是自己的,所以我一直想写一个弹出层plug-in.no废话,往前走!

1:覆盖层

要弹出图层,首先使用一个遮罩层来阻挡下面的页面。掩码层是全屏的,页面滚动也需要设置。因此,设置位置:固定和透明的效果。接下来是我定义的掩码层CSS,名为掩码。

复制代码代码如下所示:

。面膜

{

位置:固定;

宽度:100%;

身高:100%;

背景颜色:白色;

溢出:滚动;

滤镜:alpha(不透明度= 50);

-个不透明度:0.5;

不透明性:0.5;

Z指数:20;

溢出:自动;

上图:0px;

右:0px;

}



2:插件的主要参数

你为什么需要标签标签可以指定需要弹出一个隐藏的元素,您可以指定# *标签选择器,你可以指定流行元素。在这里我设置默认这。

这个参数要求主要内容:我认为它不是很有用。我主要是为服务器控件设置的,如果它们都添加到了正文中,就不能提交表单。但是当提交命中页面时,页面会刷新,弹出层消失,所以我认为它仍然无用。

复制代码代码如下所示:

美元。fn.xspop =功能(选项){

var默认值=默认值

标题:弹出窗口标题

宽度:500,

身高:400,

标记:这个加载项的弹出窗口

关闭:关闭

主要内容:身体 / /容器,以提交表单提交,但将刷新页面…

};

var选项=扩展(默认值,选项);

this.each(函数(){()

XsMain(options.title,options.width,options.heigth,options.tag,options.close,选项内容); / /插件的主要入口

});

};



3:加用xsmain功能元素绑定事件

这里有一种控制高度和宽度的方法。如果设置超过屏幕的高度,它将适应屏幕,使弹出层太大而无法操作。另一个是普通的HTML添加,以及我使用的字符串的添加。

复制代码代码如下所示:

根据输入的数据,添加一个图层蒙版、弹出框

功能xsmain(标题、宽度、高度、标签、关闭、主要内容){

无功divmask = ;

$(内容)。追加(divmask);

无功xspop1 = ;

无功xspop2 = +标题+++关闭;

无功xspop3 = ;

无功xspop5 = ;

无功allhtml = xspop1 + xspop2 + xspop3 + xspop5;

$(内容)。追加(allhtml);

美元(标签);

$(标签),AppendTo(# xspopmain );

一个浏览器的高度和宽度的背面判断(高度超过,拖动边界限制)

window.screen.height自己=;

clientwidth =屏幕分辨率的宽;

如果(高度>自己){

自己的高度= 100;

}

如果(宽度>clientwidth){

clientwidth宽度= 100;

}

$(# xspop)。Css({

高:高度+PX

宽度:宽度+

边距顶部:+(高度 2)+

边缘左:+(宽度 2)+

});

$(# xspopmain)。Css(高

Xsdrag(# xspophead

$(# xscolse)。Bind(点击),功能({ closepop(标签、内容);}); / /绑定了行动

}



4:闭幕行动

这里是先把标签给容器,否则后面的删除将一起删除,第二个弹出的标签找不到。

复制代码代码如下所示:

关闭弹出图层

功能closepop(标签内容){

$(内容)。追加(标签); / /保存,或第四美元(# xspop ),删除(标签)将空

美元(标签);

$(掩码);

$(# xspop )删除();

}



5:拖放效果

方法1:第一次发现使用元素的事件,但很容易出现元素丢失的问题,效果不理想。

复制代码代码如下所示:

弹出拖动(失败的方法,对象会出现丢失)

控件是一个拖放元素,标记是动作元素,一般控件位于标记内。

函数拖动(控制,标记){

ismove =假 /无功;

无功/ abs_x = 0,abs_y = 0;

(控制)。Mousedown($ /

函数(事件){

偏移量;

左(=);

/ / abs_x = event.pagex左;

/ / abs_y = event.pagey顶;

/ / ismove =真;

/ / Mouseleave(功能)({ })

/ / ismove = false;

};

/ / $(控制)。Mouseup(function(){

/ / ismove = false;

};

/ / $(document)。Mousemove(函数(事件){

如果(ismove){ / /

Css({)

/ /右:event.pagex - abs_x + $(标签)。Width(2-1) /,

/ /顶:event.pagey - abs_y + $(标签)。Height(- 1)/ 2

};

}

返回/ false;

};

}



第二种方法,我目前使用的方法是使用文档的下降和上升,但仍然存在一些问题。移动太快的问题是一个小的跳动现象。

我也发现了一个问题。如果我把弹出层直接在屏幕的上部,那么你永远不能把它背或关闭它。我去百度主页上看到弹出层,和他们有同样的现象,但窗口点扩大,弹出层回到中心,我也试图这样做,但当我把onresize,我不能移动的底部。他们使用的事件是绝对不onresize。,所以我直接判断鼠标的位置不能低于0。

复制代码代码如下所示:

拖动/弹出

控件是一个拖放元素,标记是动作元素,一般控件位于标记内。

功能xsdrag(控制、标签){

$(控制)。Mousedown(功能(E) / / E鼠标事件

{

var偏移量=($)。

var x = e.pagex - offset.left; / /获取鼠标指针从DIV元素的左边框的距离

var y = e.pagey - offset.top; / / DIV元素边界距离获取鼠标指针

$(document)。Bind(MouseMove

{

如果(ev.pagey <= 0){ return;} / /无法关闭边境,防止在屏幕上拖动

$(标签)Css({

左:ev.pagex X + $(标签),Width(2) / / /,我需要添加此布局

顶:ev.pagey Y + $(标签)。Height() / 2

});

});

});

$(document)。Mouseup(function(){)

$(这)。Unbind(鼠标移动);

});

}



6:样式表



弹出层的布局使用顶部和左边+边距顶部的负值,所以我的JS有一半以上的高度和宽度。

复制代码代码如下所示:

。面膜

{

位置:固定;

宽度:100%;

身高:100%;

背景颜色:白色;

溢出:滚动;

滤镜:alpha(不透明度= 50);

-个不透明度:0.5;

不透明性:0.5;

Z指数:20;

溢出:自动;

上图:0px;

右:0px;

}

弹出。

{

填料:0px;

位置:绝对;

Z指数:21!重要;

背景颜色:白色;

边框风格:固-固-固;

边框宽度:1px;

边框颜色:# c0c0c0;

左:50%;

顶部:50%;

}

pophead。

{

背景颜色:# f0f0f0;

边框底部样式:实心;

底部边框宽度:1px;

底部边框颜色:# c0c0c0;

身高:30px;

光标移动;

剪辑:矩形(0px,汽车,汽车,0px);

}

PopHead B。

{

浮点数:左;

显示块;

颜色:# c0c0c0;

字体族:系统;

字体大小:中等;

行高:30px;

文本缩进:2em;

}

PopHead的跨度。

{

浮子:右边;

显示块;

文本对齐:正确;

行高:30px;

光标:指针;

文本缩进:5px;

颜色:# FF0000;

字体大小:12pt;

}

popmain。

{

填料:10px;

溢出:自动;

}



7:页面的使用

测试服务器控件可以提交表单

复制代码代码如下所示:

$(文档)Ready(函数(){)

$(# btnpop)。Click(function(){)

var选项{ {

标题:我的流行音乐

宽度:500,

身高:400,

关闭:关闭

主要内容:形式

}

$(# POP1)。XsPop(选项);

});

});



这几乎是对的。我也想做一个边界拖动改变大小的大小变化,发现它需要一点时间,先不要做。事实上,我认为拖放不是很重要,而且边界控制大小不显著,因为我设置了溢出和滚动条。