jquery tools系列 overlay 学习
作者:
接着上次scrollable的学习,今天继续jquery tools六大功能的第四个功能——overlay的学习。
如scrollable的学习,首先给出操作的html目标代码:
<button rel="#overlay">Open overlay</button>
<button rel="#overlay2">Other overlay</button>
<div class="overlay" id="overlay">
<h2 style="margin:10px 0" >Here is my overlay</h2>
<p style="float: left; margin:0px 20px 0 0;">
<span>$$$$$$$$$$</span>
</p>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
</div>
<div class="overlay" id="overlay2">
<h2 style="margin:10px 0" >Here is my another overlay</h2>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
<div>
<button id="overlayClose">close</button>
</div>
</div>
该功能是通过jqueryObject.overlay()方法来实现的,其中overlay方法提供以下两种方式:
1. $("button[rel]").overlay()//该方法能采用默认方法显示提示overlay
2. $("button[rel]").overlay({config object}) //该方法通过配置对象将来定制overlay的显示。
以下代码为第二种方式的配置参数实现(只需将该实现放于jquery的ready方法中即可):
$("#overlay").overlay({api:true}).load();//自动显示overlay,(无需触发,会在页面加载完成时自动触发)
$("button[rel]").overlay({
start:{
width: 300,
absolute: false
},
finish:{
top:10,
left:400,
absolute:false
},
speed:3000,
fadeInSpeed:3000,
closeOnClick: false,
oneInstance:false,
close:'#overlayClose',//自定义关闭按钮
//expose: '#BAD0DB'//方式一:只以简单的背景色字符串方式设置
expose: {//方式二:以expose功能配置项方式设置
color: '#BAD0DB',
opacity: 0.7,
closeSpeed: 1000
},
onBeforeLoad:function(){
//alert(this.getTrigger().attr("rel")+":onBeforeLoad");//显示该overlay提示框的触发器rel属性值
},
onLoad:function(){
//alert(this.getTrigger().attr("rel")+":onLoad");
},
onBeforeClose:function(){
alert(this.getTrigger().attr("rel")+":onBeforeClose");
return false;
}
});
以上配置参数说明描述如下:
此外,tooltip还提供了一系列获取overlay对象的方法,具体使用方式如下:
var overlayObj=$("#overlay").overlay({api:true});
overlayObj.load();//自动显示overlay,(无需触发,会在页面加载完成时自动触发)
setTimeout(function(){overlayObj.close();},2000);//2秒后,自动加载(出现)的提示框隐藏
$("#overlayInfo").append("<P>overlay is opened:"+overlayObj.isOpened()+"</p>");//判断此时是否有overlay提示框是否显示
$("#overlayInfo").append("<p>overlay background image:"+overlayObj.getBackgroundImage()+"</p>");
$("#overlayInfo").append("<p>overlay trigger:"+overlayObj.getTrigger()+"</p>");
$("#overlayInfo").append("<p>overlay config-speed:"+overlayObj.getConf().speed+"</p>");
$("#overlayInfo").append("<p>overlay content:"+overlayObj.getContent().html()+"</p>");
overlayObj.onBeforeLoad=function(){
alert(this.getContent().attr("id"));
}
以下是overlay对象的方法说明描述:
最后,给出完整示例代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script src="http://flowplayer.org/tools/js/tools/1.0.2/jquery.tools.min.js" ></script>
<style><!--
body {
padding:150px 50px;
font-family:"Lucida Grande","Lucida Sans Unicode","bitstream vera sans","trebuchet ms",verdana;
}
#overlayInfo p{
color:red;
}
--></style><style >body {
padding:150px 50px;
font-family:"Lucida Grande","Lucida Sans Unicode","bitstream vera sans","trebuchet ms",verdana;
}
#overlayInfo p{
color:red;
}</style>
<link rel="stylesheet" type="text/css" href="http://flowplayer.org/tools/css/overlay-minimal.css" />
<script type="text/javascript"><!--
$(function() {
$("button[rel]").overlay({
start:{
width: 300,
absolute: false
},
finish:{
top:10,
left:400,
absolute:false
},
speed:3000,
fadeInSpeed:3000,
closeOnClick: false,
oneInstance:false,
close:'#overlayClose',//自定义关闭按钮
//expose: '#BAD0DB'//方式一:只以简单的背景色字符串方式设置
expose: {//方式二:以expose功能配置项方式设置
color: '#BAD0DB',
opacity: 0.7,
closeSpeed: 1000
},
onBeforeLoad:function(){
//alert(this.getTrigger().attr("rel")+":onBeforeLoad");//显示该overlay提示框的触发器rel属性值
},
onLoad:function(){
//alert(this.getTrigger().attr("rel")+":onLoad");
},
onBeforeClose:function(){
alert(this.getTrigger().attr("rel")+":onBeforeClose");
return false;
}
});
var overlayObj=$("#overlay").overlay({api:true});
overlayObj.load();//自动显示overlay,(无需触发,会在页面加载完成时自动触发)
setTimeout(function(){overlayObj.close();},2000);//2秒后,自动加载(出现)的提示框隐藏
$("#overlayInfo").append("<P>overlay is opened:"+overlayObj.isOpened()+"</p>");//判断此时是否有overlay提示框是否显示
$("#overlayInfo").append("<p>overlay background image:"+overlayObj.getBackgroundImage()+"</p>");
$("#overlayInfo").append("<p>overlay trigger:"+overlayObj.getTrigger()+"</p>");
$("#overlayInfo").append("<p>overlay config-speed:"+overlayObj.getConf().speed+"</p>");
$("#overlayInfo").append("<p>overlay content:"+overlayObj.getContent().html()+"</p>");
overlayObj.onBeforeLoad=function(){
alert(this.getContent().attr("id"));
}
});
// --></script>
<button rel="#overlay">Open overlay</button>
<button rel="#overlay2">Other overlay</button>
<div class="overlay" id="overlay">
<h2 style="margin:10px 0">Here is my overlay</h2>
<p style="float: left; margin:0px 20px 0 0;">
<span>$$$$$$$$$$</span>
</p>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
</div>
<div class="overlay" id="overlay2">
<h2 style="margin:10px 0" >Here is my another overlay</h2>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
<div>
<button id="overlayClose">close</button>
</div>
</div>
<div id="overlayInfo"></div>
复制代码 代码如下:
<button rel="#overlay">Open overlay</button>
<button rel="#overlay2">Other overlay</button>
<div class="overlay" id="overlay">
<h2 style="margin:10px 0" >Here is my overlay</h2>
<p style="float: left; margin:0px 20px 0 0;">
<span>$$$$$$$$$$</span>
</p>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
</div>
<div class="overlay" id="overlay2">
<h2 style="margin:10px 0" >Here is my another overlay</h2>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
<div>
<button id="overlayClose">close</button>
</div>
</div>
该功能是通过jqueryObject.overlay()方法来实现的,其中overlay方法提供以下两种方式:
1. $("button[rel]").overlay()//该方法能采用默认方法显示提示overlay
2. $("button[rel]").overlay({config object}) //该方法通过配置对象将来定制overlay的显示。
以下代码为第二种方式的配置参数实现(只需将该实现放于jquery的ready方法中即可):
复制代码 代码如下:
$("#overlay").overlay({api:true}).load();//自动显示overlay,(无需触发,会在页面加载完成时自动触发)
$("button[rel]").overlay({
start:{
width: 300,
absolute: false
},
finish:{
top:10,
left:400,
absolute:false
},
speed:3000,
fadeInSpeed:3000,
closeOnClick: false,
oneInstance:false,
close:'#overlayClose',//自定义关闭按钮
//expose: '#BAD0DB'//方式一:只以简单的背景色字符串方式设置
expose: {//方式二:以expose功能配置项方式设置
color: '#BAD0DB',
opacity: 0.7,
closeSpeed: 1000
},
onBeforeLoad:function(){
//alert(this.getTrigger().attr("rel")+":onBeforeLoad");//显示该overlay提示框的触发器rel属性值
},
onLoad:function(){
//alert(this.getTrigger().attr("rel")+":onLoad");
},
onBeforeClose:function(){
alert(this.getTrigger().attr("rel")+":onBeforeClose");
return false;
}
});
以上配置参数说明描述如下:
属性 |
默认值 | 说明 |
start (Object) | {top: 'center',left: 'center', width: 0,absolute: false} | 用于设置overlay弹出框开始的位置以及大小。默认的情况下,overlay弹出框开始的位置是其触发器(即触发其显示的页面元素)的位置,并且overlay弹出框初始的大小为0;如果overlay不是通过页面元素触发的话,那么他开始的位置为屏幕的中间位置。可以通过以下几个参数设置来覆盖该属性的默认值: |
top:用于设置overlay弹出框开始位置据屏幕上边缘的距离。 | ||
left:用于设置overlay弹出框开始位置据屏幕左边缘的距离。 | ||
width:用于设置overlay弹出框在开始位置处的宽度(即弹出框最初始宽度);而overlay在开始处高度则会根据宽度自动计算出来。 | ||
absolute:如果该值设置为true的话,那么overlay弹出框开始处的位置这回根据浏览器窗口左上角处来计算并不考虑滚动位置。如果该值设置为,那么overlay弹出框开始处的位置将会将滚动位置计算在内。 | ||
finish (Object) | {top: 100,left: 'center',absolute: false} | 用于设置overlay弹出框最终所处的位置及大小。、可以通过以下几个参数设置来覆盖该属性的默认值: |
top:用于设置overlay弹出框最终位置据屏幕上边缘的距离。 | ||
left:用于设置overlay弹出框最终位置据屏幕左边缘的距离。 | ||
absolute:如果该值设置为true的话,那么overlay弹出框最终处的位置会根据距浏览器窗口左上角位置来计算并不考虑滚动位置。如果该值设置为,那么overlay弹出框最终处的位置将会将滚动位置计算在内。 | ||
此外,overlay弹出框最终位置的大小由相关css属性来设置的。 | ||
expose | overlay弹出框经常与expose功能共同使用。而二者共同使用的方式正是通过overlay的该配置属性来设置的。该配置项接受expose功能的配置对象。该属性接受的参数分两种:一种为只接受expose背景色设置的字符串;另一种方式为expose配置对象。该属性的两种参数方式可参见本文示例。 | |
speed | 'normal' | 设置overlay弹出框弹出的速度。该属性接受的有效值为:slow,normal,fast,以及毫秒数值。如果该属性值被置为0,那么overlay弹出框将会以无动画效果的方式立即显示。 |
fadeInSpeed | 'fast' | 设置overlay弹出框中内容显示的速度,该属性接受的有效值通speed属性。 |
oneInstance | TRUE | 默认情况下,一个页面只会显示一个overlay弹出框。但是,可通过将该属性设置为false来允许该页面显示多个overlay弹出框。(注:该属性在closeOnClick设置为false的情况下才能有比较明显的效果。) |
closeOnClick | TRUE | 默认情况下,点击页面中overlay弹出框外的其他区域,可以关闭该overlay弹出框。但是,将该属性设置为false可以屏蔽该功能。 |
preload | TRUE | 默认情况下,背景图片会被预先加载到浏览器的缓存中。所以,当overlay提示框被打开时,overlay提示框的背景图片已被加载到缓存,所以当触发overlay提示框时,整个提示框弹出过程会很平滑。另外,可通过将属性设置为false来阻止背景图片的预加载。 |
close | 关闭按钮设置。如果用户没有在该处提供overlay提示框关闭按钮,那么,overlay提示框会自动产生关闭按钮。关于用户自己定制关闭overlay提示按钮的方法,请参考本文相关示例。 | |
zIndex | 9999 | 设置overlay提示框的z-index属性(css),至于z-index属性作用,请参见相关资料。该属性已被设置为一个很高的值-999,所以一般情况下,该属性不需要再行设置。但是需要注意的是,该值应该大于通页面其他元素的z-index值。 |
target | 如果rel属性没指定overlay提示框的话,那么可通过该属性设置overlay提示框元素。 | |
onBeforeLoad | None | 回调函数,该属性会在overlay提示框触发前执行,如果该函数返回false的话,那么overlay提示框将会被阻止而不显示。 |
onLoad | None | 回调函数,该属性会在overlay提示框触发完成后执行。 |
onBeforeClose | None | 回调函数。该属性会在overlay提示框关闭事件触发后,overlay提示框关闭前执行。返回false则阻止overlay提示框关闭。 |
onClose | None | 回调函数。该属性会在overlay提示框关闭后触发。 |
api | FALSE | 该属性设置同selector,tab功能的api属性。该属性意义参考本系列selector,tab相关说明。 |
此外,tooltip还提供了一系列获取overlay对象的方法,具体使用方式如下:
复制代码 代码如下:
var overlayObj=$("#overlay").overlay({api:true});
overlayObj.load();//自动显示overlay,(无需触发,会在页面加载完成时自动触发)
setTimeout(function(){overlayObj.close();},2000);//2秒后,自动加载(出现)的提示框隐藏
$("#overlayInfo").append("<P>overlay is opened:"+overlayObj.isOpened()+"</p>");//判断此时是否有overlay提示框是否显示
$("#overlayInfo").append("<p>overlay background image:"+overlayObj.getBackgroundImage()+"</p>");
$("#overlayInfo").append("<p>overlay trigger:"+overlayObj.getTrigger()+"</p>");
$("#overlayInfo").append("<p>overlay config-speed:"+overlayObj.getConf().speed+"</p>");
$("#overlayInfo").append("<p>overlay content:"+overlayObj.getContent().html()+"</p>");
overlayObj.onBeforeLoad=function(){
alert(this.getContent().attr("id"));
}
以下是overlay对象的方法说明描述:
方法 |
默认值 | 描述 |
load() | Overlay | 打开overlay提示框的另一个方法,通过该方法可以不通过页面事件触发而直接通过js脚本打开overlay提示框。 |
close() | Overlay | (通过js脚本对该方法的调用)关闭弹出的overlay提示框。 |
isOpened() | boolean | 判断当前是否有overlay提示框被打开。如果当前有overlay提示框已被打开,返回true。 |
getBackgroundImage() | jQuery | 将当前overlay提示框的背景图片作为一个jquery对象返回。 |
getContent() | jQuery | 将overlay弹出框的内容以jquery对象的方式返回。 |
getTrigger() | jQuery | 将触发overlay弹出框的元素以jquery对象的方式返回。 |
getConf() | Object | 获取overlay弹出框初始化时的配置对象。 |
api | FALSE | 同配置对象中api。 |
onBeforeLoad(fn) | API | 同配置文件中onBeforeLoad属性。 |
onLoad(fn) | API | 同配置文件中onLoad属性。 |
onBeforeClose(fn) | API | 同配置文件中onBeforeClose属性。 |
onClose(fn) | API | 同配置文件中onClose属性。 |
复制代码 代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script src="http://flowplayer.org/tools/js/tools/1.0.2/jquery.tools.min.js" ></script>
<style><!--
body {
padding:150px 50px;
font-family:"Lucida Grande","Lucida Sans Unicode","bitstream vera sans","trebuchet ms",verdana;
}
#overlayInfo p{
color:red;
}
--></style><style >body {
padding:150px 50px;
font-family:"Lucida Grande","Lucida Sans Unicode","bitstream vera sans","trebuchet ms",verdana;
}
#overlayInfo p{
color:red;
}</style>
<link rel="stylesheet" type="text/css" href="http://flowplayer.org/tools/css/overlay-minimal.css" />
<script type="text/javascript"><!--
$(function() {
$("button[rel]").overlay({
start:{
width: 300,
absolute: false
},
finish:{
top:10,
left:400,
absolute:false
},
speed:3000,
fadeInSpeed:3000,
closeOnClick: false,
oneInstance:false,
close:'#overlayClose',//自定义关闭按钮
//expose: '#BAD0DB'//方式一:只以简单的背景色字符串方式设置
expose: {//方式二:以expose功能配置项方式设置
color: '#BAD0DB',
opacity: 0.7,
closeSpeed: 1000
},
onBeforeLoad:function(){
//alert(this.getTrigger().attr("rel")+":onBeforeLoad");//显示该overlay提示框的触发器rel属性值
},
onLoad:function(){
//alert(this.getTrigger().attr("rel")+":onLoad");
},
onBeforeClose:function(){
alert(this.getTrigger().attr("rel")+":onBeforeClose");
return false;
}
});
var overlayObj=$("#overlay").overlay({api:true});
overlayObj.load();//自动显示overlay,(无需触发,会在页面加载完成时自动触发)
setTimeout(function(){overlayObj.close();},2000);//2秒后,自动加载(出现)的提示框隐藏
$("#overlayInfo").append("<P>overlay is opened:"+overlayObj.isOpened()+"</p>");//判断此时是否有overlay提示框是否显示
$("#overlayInfo").append("<p>overlay background image:"+overlayObj.getBackgroundImage()+"</p>");
$("#overlayInfo").append("<p>overlay trigger:"+overlayObj.getTrigger()+"</p>");
$("#overlayInfo").append("<p>overlay config-speed:"+overlayObj.getConf().speed+"</p>");
$("#overlayInfo").append("<p>overlay content:"+overlayObj.getContent().html()+"</p>");
overlayObj.onBeforeLoad=function(){
alert(this.getContent().attr("id"));
}
});
// --></script>
<button rel="#overlay">Open overlay</button>
<button rel="#overlay2">Other overlay</button>
<div class="overlay" id="overlay">
<h2 style="margin:10px 0">Here is my overlay</h2>
<p style="float: left; margin:0px 20px 0 0;">
<span>$$$$$$$$$$</span>
</p>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
</div>
<div class="overlay" id="overlay2">
<h2 style="margin:10px 0" >Here is my another overlay</h2>
<p>
Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos himenaeos. Donec lorem ligula, elementum vitae,
imperdiet a, posuere nec, ante. Quisque mattis massa id metus.
</p>
<div>
<button id="overlayClose">close</button>
</div>
</div>
<div id="overlayInfo"></div>