JavaScript教程:网页浮动定位提示效果(6)

http://www.itjxue.com  2015-08-06 23:11  来源:未知  点击次数: 

 

自适应定位

自适应定位的作用是当Tip显示的范围超过浏览器可视范围的时候,自动修正到可视范围里面。
因为上面通过getBoundingClientRect获取的定位是以视窗为准的,所以可以直接通过clientWidth/clientHeight来判断是否超过视窗范围。
首先获取最大left和top值:

var maxLeft = this._doc.clientWidth - this.Tip.offsetWidth,
    maxTop = this._doc.clientHeight - this.Tip.offsetHeight;

最小值是0就不用计算了。

如果Reset属性是true会使用重新定位的方法。
理想的效果是能自动从25个预设定位中找到适合的定位位置。
但这个需求实在变化太多,要全部实现估计要长长的代码,程序仅仅做了简单的修正:

if (iLeft > maxLeft || iLeft < 0) {
    iLeft = this.GetLeft(rect, 2 * iLeft > maxLeft ? "left" : "right") + customLeft;
};   
if (iTop > maxTop || iTop < 0) {
    iTop = this.GetTop(rect, 2 * iTop > maxTop ? "top" : "bottom") + customTop;
};

实际应用的话估计要按需求重写这部分才行。

如果不是用Reset重新定位,只需要根据这几个值获取适合的值就行了:

iLeft = Math.max(Math.min(iLeft, maxLeft), 0);
iTop = Math.max(Math.min(iTop, maxTop), 0);

隐藏select

又是ie6的隐藏select问题,这里用的是iframe遮盖法。

首先初始化时插入iframe:

this._iframe = document.createElement(" <iframe style='position:absolute;filter:alpha(opacity=0);display:none;'>");
document.body.insertBefore(this._iframe, document.body.childNodes[0]);

在Show的时候,参照Tip设置好样式,再显示:

this._iframe.style.left = iLeft + this._docScroll.scrollLeft + "px";
this._iframe.style.top = iTop + this._docScroll.scrollTop + "px";
this._iframe.style.width = this.Tip.offsetWidth + "px";
this._iframe.style.height = this.Tip.offsetHeight + "px";
this._iframe.style.display = "";

其实就是要垫在Tip的下面。

在Hidde时隐藏就可以了。

使用说明

实例化时,第一个必要参数是Tip对象:

var ft = new FixedTips("idTip");

第二个可选参数用来设置触发对象属性的统一默认值。

然后用Add方法添加触发对象:

var trigger1 = ft.Add("idTrigger1");

第二个可选参数用来设置该触发对象属性。

要添加多个触发对象时只需继续用Add添加就行了。

程序源码

代码拷贝框

[Ctrl+A 全部选择 然后拷贝]

(责任编辑:IT教学网)

更多

推荐Javascript/Ajax文章