当前位置:编程学习 > JS >>

jQuery powerFloat万能浮动层下拉层插件使用介绍

答案:一、写插件的缘由

为什么想写此插件,想来想去,归结为一个字:“懒”。不想为明明两个类似的功能分别写代码,本应喝茶看美女的休闲时光晃荡在本可避免的代码上,对于我来讲,就是白白耗费自己的青春。于是,干脆,一鼓作气,把这些类似的功能集合到一起,一个插件搞定,一了百了了。这种感觉就好比《大话西游》里悟空一巴掌拍死唐僧这只苍蝇一样。那,这里提及的类似的功能是指?当当当当,就是与某元素有位置关系的浮动层(例如tip类效果,鼠标经过显示大图,下拉列表等)。

下拉菜单 脚本之家

二、插件概述

插件名为jquery-powerFloat.js。//zxx:之前我喜欢用”.”连接,后发现在使用combo合并脚本的时候会出问题,于是,现在使用”-”连接名称了。

powerFloat顾名思意就是“强大的浮动”。使用库jQuery,大小20K多点,使用YUICompressor压缩后大小折半,是有史以来代码量写的最多的一个插件了。

支持hover, click, focus以及无事件触发;支持多达12种位置的定位,出界自动调整;支持页面元素加载,Ajax加载,下拉列表,提示层效果,tip类效果等;可自定义装载容器;内置UI不错的装载容器;支持鼠标跟随等。

三、demo及下载

demo
您可以狠狠地点击这里:万能浮动插件powerFloat测试页面

下为demo页面中鼠标经过显示大图效果截图:
demo页面效果截图 脚本之家

下载
JS文件下载:jquery-powerFloat.js(未压缩) 或 jquery-powerFloat-min.js(压缩)
zip打包下载:jquery-powerFloat.zip

//zxx:下载均右键 – [目标|链接]另存为

四、如何使用

使用很简单,统一的模式,就是$(选择器).powerFloat({..});具体使用如下:

首先不要忘了加载CSS文件,如下:
<link rel="stylesheet" href=>
然后,在页面上加载jQuery库以及本文的jquery-powerFloat.js文件,如下:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><script type="text/javascript" src="http://www.zhangxinxu.com/study/js/jquery-powerFloat.js"></script>

假设此时页面上有个链接,其HTML如下:

<a id="trigger" href=>

则:

$("#trigger").powerFloat();
就可以了。此段代码实现的效果是,鼠标经过“经过我”这个文字链接,会在其下方显示页面上id为”targetBox”的元素(可参见demo页面中第一个例子)。

如果要用几个关键词来概括此插件,无非就是触发元素(trigger,也就是选择器绑定对象),触发事件(API中的eventType),浮动元素(target,各种方式获取的元素),定位(target的定位)。下文中,trigger一词就是指触发元素,target指浮动元素。

由于插件集合的功能较多,所以使用规则稍微多了点,具体可参见下面的API表格展示,之后的详细解释。这里就不多说了。

五、API参数 jQuery powerFloat插件API参数
参数名默认值释义说明width"auto"其他可选参数:"inherit",数值(px)(百分比等),"auto"表宽度自动,"inherit"表宽度与方法触发元素宽度一样offsets{x:0, y:0}浮动层的偏移值。可正可负。如果为正值,右下方元素右下方偏移,左上方元素左上方偏移。偏移方向为扩散状zIndex999浮动框层级。插件自带小三角层级为999+1,数值上总是大1eventType"hover"其他可选参数:"click", "focus",如果参数为其他,则绑定触发浮动层的显示与定位showDelay0事件类型(eventType)为"hover"时浮动层显示的延迟时间,单位毫秒hideDelay0鼠标移出对象时浮动层隐藏延迟时间hoverHoldtrue布尔型,浮动层是否鼠标悬停。如果为false,只要鼠标移出触发元素,浮动层即隐藏hoverFollowfalse其他可选参数:true, "x", "y"。是否鼠标跟随。"x"表示仅水平方向跟随,"y"为垂直方向,true或其他参数为任意方向跟随targetMode"common"字符串,关键字参数还有:"ajax", "list", "remind"。表示浮动层的类型targetnull浮动层内容来源,优先选取来源,根据targetMode的不同,这里的参数类型也有所不同targetAttr"rel"自定义的标签属性。也是浮动层内容来源,可用作元素id,或是字符串containernulljQuery对象,转载浮动层的容器,如果targetMode自定义,可以使用"plugin"关键字,表示使用插件自带容器reverseSharpfalse布尔型。尖角显示是否反转。默认ajax, remind是显示三角的,其他如list和自定义形式是不显示的position"4-1"浮动层显示的位置。此规则稍微复杂,下面有详解edgeAdjusttrue布尔型。如果浮动层在显示屏之外,是否调整浮动层位置showCall$.noop浮动层显示时候的回调函数hideCall$.noop浮动层隐藏时候的回调函数

(create by zhangxinxu 2010-12-15)

六、API参数详解

插件可以实现的功能多了,支持的事件多了,又要有精炼的API,API的使用规则自然而然也就多了,复杂了。但是,一旦了解这些规则后,工作就将变得异常轻松,你会发现生活原来如此美好。

1. width
宽度值,与CSS中的width属性的些值是一样的。
CSS width属性值 脚本之家

这里的width也是可以是”auto”(默认),”inherit”,以及具体的宽度值。但是,有所不同的是这里的”inherit”,继承的不是父标签的宽度,而是继承的触发元素的宽度。举个例子,我鼠标移动一个a标签的文字链接上,结果显示了浮动层,如果此时width参数设置的值是”inherit”,则浮动层的宽度就是这个a标签的宽度。此属性在等宽下拉列表下非常有用。

2. offsets
相对于目标位置的偏移值。默认是{x:0, y:0},其中x表示水平方向偏移,y表示垂直方向偏移。根据浮动层(target)与触发元素(trigger)的位置不同,offsets的偏向也是不同的,左侧位置和上部位置offsets是向左上方偏移,而要是浮动层和触发元素在右侧和下方位置接触,则offsets值表示右下方的偏移,大致意思如下图所示:
offsets参数规则图示 脚本之家

其实只要意识到这里的offsets偏移是以触发元素(trigger)为参考点进行偏移就可以了。trigger位置固定,target相对偏移,以trigger为中心,辐射状偏移。举个例子吧,如果offsets.x = 10,那么要是浮动层在右侧,则右偏移10像素,要是浮动层在左侧则左偏移10像素。

3. zIndex
浮动层的层级,浮动层都是采用的绝对定位,所以有层级,默认大小为999。插件自带的UI中的小三角也是绝对定位,其层级比浮动层高一级,所以,小三角默认层级是1000.

4. eventType
事件类型,一般而言,此参数无非这几个:”hover”(默认), “click”, “focus”以及null,其中”hover”表示鼠标悬停和移出事件,”click”表示点击事件,”focus”表示获得焦点事件,适用于表单元素,null表示无事件,也就是trigger绑定了powerFloat方法即触发,此参数在点击A元素,但是让B元素上显示提示上很有用。

5. showDelay
显示延迟。只有当eventType为”hover”时此参数才有用,”click”, “focus”都是无延迟执行的。单位毫秒,当为大于0的整数时生效(使用可参见demo中自定义Tip效果)。

6. hideDelay
鼠标移出延迟。只有当eventType为”hover”时此参数才有用。其中有两种情况下默认是有hideDelay的,一是当hoverHold参数为true的时候,会有200毫秒的隐藏延迟;另外一种情况就是eventType为”focus”时,失去焦点隐藏,也是有200毫秒的延迟关闭(保护点击事件)。

7. hoverHold
当鼠标经过浮动层时浮动层是否依然显示。只有当eventType为”hover”时此参数才有用。如果为false,则表示鼠标一旦离开trigger(触发元素),则target(浮动元素)隐藏(使用可参见demo中自定义Tip效果)。

8. hoverFollow
是否鼠标跟随。参数可以是false,true以及关键字”x”, “y”,其中false为默认值,表示不鼠标跟随,”x”表示仅水平方向鼠标跟随,”y”表示仅垂直方向,无论是”x”还是”y”,浮动层都不会与触发元素发生重叠的,只是单向的位置移动。但是,如果hoverFollow为true,则是真正意义上的鼠标跟随,target的左上角会紧随鼠标,也会与trigger发生重叠,注意,此时应该设置一定的offsets值,否则会因为与鼠标位置过近的原因,反复触发鼠标移入移出事件,

上一个:基于Jquery的动态创建DOM元素的代码
下一个:javascript字符串拼接的效率问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,