自適應(yīng)定位:
自適應(yīng)定位的作用是當(dāng)Tip顯示的范圍超過瀏覽器可視范圍的時候,自動修正到可視范圍里面。 因為上面通過getBoundingClientRect獲取的定位是以視窗為準(zhǔn)的,所以可以直接通過clientWidth/clientHeight來判斷是否超過視窗范圍。 首先獲取最大left和top值:
var maxLeft = this._doc.clientWidth - this.Tip.offsetWidth, maxTop = this._doc.clientHeight - this.Tip.offsetHeight;
最小值是0就不用計算了。
如果Reset屬性是true會使用重新定位的方法。 理想的效果是能自動從25個預(yù)設(shè)定位中找到適合的定位位置。 但這個需求實在變化太多,要全部實現(xiàn)估計要長長的代碼,程序僅僅做了簡單的修正:
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; };
實際應(yīng)用的話估計要按需求重寫這部分才行。
如果不是用Reset重新定位,只需要根據(jù)這幾個值獲取適合的值就行了:
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設(shè)置好樣式,再顯示:
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時隱藏就可以了。
使用說明
實例化時,第一個必要參數(shù)是Tip對象:
var ft = new FixedTips("idTip");
第二個可選參數(shù)用來設(shè)置觸發(fā)對象屬性的統(tǒng)一默認(rèn)值。
然后用Add方法添加觸發(fā)對象:
var trigger1 = ft.Add("idTrigger1");
第二個可選參數(shù)用來設(shè)置該觸發(fā)對象屬性。
要添加多個觸發(fā)對象時只需繼續(xù)用Add添加就行了。
程序源碼:
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
完整實例下載(點擊下載)
經(jīng)典論壇交流: http://bbs.blueidea.com/thread-2937700-1-1.html
本文鏈接:http://www.95time.cn/tech/web/2009/6852.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 JavaScript 浮動定位提示效果 [5] 下一頁
◎進入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|