| 自适应定位:  自适应定位的作用是当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 全部选择 然后拷贝]
 完整实例下载(点击下载) 经典论坛交流:本文链接:http://www.blueidea.com/tech/web/2009/6852.asphttp://bbs.blueidea.com/thread-2937700-1-1.html
   出处:蓝色理想
责任编辑:bluehearts
 上一页 JavaScript 浮动定位提示效果 [5] 下一页 ◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
	      |