欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery探測位置的提示彈窗(toolTip box)詳細(xì)解析

 更新時間:2013年11月14日 09:28:59   作者:  
提示彈窗(toolTip box)經(jīng)常會被用到,但是本文總要的不是彈,也不是窗,而是探測位置,在適當(dāng)?shù)牡胤綇棿?。需要的朋友可以過來參考下,希望對大家有所幫助

這里我用jQuery做了個提示彈窗的js,并做了個小demo,簡單總結(jié)下:

方位

根據(jù)當(dāng)前鼠標(biāo)所處的位置不同,箭頭所指向的方向也不同:

左上方(left-top)(缺?。?、左下方(left-bottom)、右上方(right-top)、右下方(right-bottom)、上左方(top-left)、上右方(top-right)、下左方(bottom-left)、下右方(bottom-right)


優(yōu)先級

以上各種情況優(yōu)先級依次降低

探測思路

探測基本思路是:

首先,也是前提條件,判斷容器的高或?qū)捠欠袷菑棿皩?yīng)的高或?qū)挼膬杀?,之所以是兩倍,因為臨界點是目標(biāo)容器的各個邊的中點

/*
* 先判斷目標(biāo)容器的高度或者寬度是否是容器對應(yīng)高度或?qū)挾扰c箭頭尺寸之和的兩倍,否則,報錯。之所以是2倍,因為臨界點是目標(biāo)容器的各個邊的中點。
*/

接下來,可以依據(jù)優(yōu)先級去逐個判斷:

/*
* 思路是,先檢測左側(cè),再檢測右側(cè),左右都放不下,則檢測頂部,都排除,再考慮底部。檢測左右側(cè)時,先考慮頂部能否放下;檢測上下時,先考慮據(jù)左右側(cè)那邊的距離大。

* 1.檢測左側(cè)時,判斷上下距離能否放下箭頭偏移量,有一個不能放下(例如top),則為['top', 'left'],右側(cè)一樣

* 2.檢測上下時,判斷左右距離能否放下箭頭偏移量(缺省為上,即top),有一側(cè)不能放下,即為鼠標(biāo)偏向的一側(cè)(若left<right,則left),則為['top', 'left'],此時箭頭偏移量為0,隨鼠標(biāo)移動,鼠標(biāo)left增大,則增大,最大至偏移量。

* 缺省是左側(cè),頂部。
*/

具體情況判斷:

•根據(jù)優(yōu)先級,先判斷鼠標(biāo)右側(cè)能否放下彈窗:

◦能放下,則去判斷能否再放進(jìn)個箭頭

■若能放下

■則判斷頂部是否能放下個箭頭,包括箭頭的偏移量,若能

■判斷頂部能放下箭頭包括偏移量并且不會超過目標(biāo)容器高度,則為left-top

■否則如果頂部大于彈窗高度,并底部可放下箭頭包括其偏移量,則為left-bottom

■否則,判斷底部能放下箭頭和彈窗,則為top-left

■否則,基于我們的前提條件,是bottom-left

■若不能放下,判斷底部能不能放下彈窗和箭頭

■能,則為top-left

■否則,為bottom-left

◦不能放下,則left考慮完,換right,同樣的思路

八種情況彈窗的情況和位置

舉例top-left

復(fù)制代碼 代碼如下:

 case 'top-left' :
    // top 加上 箭頭尺寸
    this.conObj.css('top', top + tarTop);
    // 判斷l(xiāng)eft距離
    if ( left < arrOffset ) {
        // 緊貼左邊
        this.conObj.css('left', tarLeft);
    } else if (right < (conWidth - arrOffset)) {             // 如果right,撐不下自身在右邊的距離(conWidth - arrOffset),則left值減小,箭頭跟隨鼠標(biāo),使自己右邊與容器對齊
        // 正常顯示的left, 減去右側(cè)還需要的寬度((conWidth - arrOffset) - right ), left - arrOffset - ((conWidth - arrOffset) - right ),得出tarWidth - conWidth
        // 換種思路,緊貼右邊,即左邊距離為,目標(biāo)容器寬度減去自身寬度
        this.conObj.css('left', tarWidth - conWidth + tarLeft);
    } else {                // 正常顯示的left
        this.conObj.css('left', left - arrOffset + tarLeft);
    }
    break;

八種情況下箭頭的情況和位置

同樣以top-left為例

復(fù)制代碼 代碼如下:

 case 'top-left' :
    this.arrowObj.prependTo(this.conObj);
    // 如果con緊貼右邊,此時,箭頭隨鼠標(biāo)移動
    if (conLeft === 0 && (conWidth > (right + arrOffset))) {
        this.arrowObj.css('left', conWidth - right - arrowPos);
    } else {
        this.arrowObj.css('left', arrowPos);
    }
    break;

最后說下在寫代碼時候的些許感悟:

寫的代碼,在重構(gòu)了N遍,寫完N行注釋后,忽然想到,其實不論是寫代碼,還是生活,我們都是有個既定的或者約定俗成的前提或者說規(guī)范的。而一旦這個規(guī)范被打破,往往前功盡棄,即使不是,往往也很受傷。實例小至代碼、大至社會,無一例外

相關(guān)文章

  • JQuery select標(biāo)簽操作代碼段

    JQuery select標(biāo)簽操作代碼段

    我們經(jīng)常遇到要操作DOM元素,例如<select>,在Asp.net中Dropdownlist原型就是select。
    2010-05-05
  • jQuery實現(xiàn)菜單式圖片滑動切換

    jQuery實現(xiàn)菜單式圖片滑動切換

    這篇文章主要介紹了jQuery實現(xiàn)菜單式圖片滑動切換效果,主要是依托于jQuery Lightbox插件來實現(xiàn),非常炫酷,這里推薦給小伙伴們
    2015-03-03
  • jQuery實現(xiàn)一個簡單的驗證碼功能

    jQuery實現(xiàn)一個簡單的驗證碼功能

    今天給大家分享一個基于jquery實現(xiàn)的簡單驗證碼功能,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-06-06
  • jQuery getJSON()+.ashx 實現(xiàn)分頁(改進(jìn)版)

    jQuery getJSON()+.ashx 實現(xiàn)分頁(改進(jìn)版)

    參考了上一篇Asp .net +jquery +.ashx 文件實現(xiàn)分頁并作了改進(jìn):ashx返回json數(shù)據(jù),減少傳輸數(shù)據(jù)量,html頁面樣式控制也比較靈活,感興趣的朋友可以參考下哈
    2013-03-03
  • jQuery的Ajax接收java返回數(shù)據(jù)方法

    jQuery的Ajax接收java返回數(shù)據(jù)方法

    今天小編就為大家分享一篇jQuery的Ajax接收java返回數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • jQuery插件之validation插件

    jQuery插件之validation插件

    最常使用javascript的場合就是表單的驗證,而jQuery作為一個優(yōu)秀的javascript庫,也提供了一個優(yōu)秀的表單驗證插件——Validation。本文將詳細(xì)介紹validation插件。下面跟著小編一起來看下吧
    2017-03-03
  • jQuery彈出窗口簡單實現(xiàn)代碼

    jQuery彈出窗口簡單實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了jQuery彈出窗口的簡單實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • jQuery實現(xiàn)百葉窗焦點圖動畫效果代碼分享(附源碼下載)

    jQuery實現(xiàn)百葉窗焦點圖動畫效果代碼分享(附源碼下載)

    這篇文章主要介紹了jQuery實現(xiàn)百葉窗焦點圖動畫效果代碼分享(附源碼下載)的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • jquery 點擊元素后,滾動條滾動至該元素位置的方法

    jquery 點擊元素后,滾動條滾動至該元素位置的方法

    下面小編就為大家?guī)硪黄猨query 點擊元素后,滾動條滾動至該元素位置的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • JQuery index()方法使用代碼

    JQuery index()方法使用代碼

    做了很多種方式的選擇項卡切換。沒有一個確定的方法。程序的魅力就在于一個[結(jié)果]有無數(shù)種[方式]去實現(xiàn)。
    2010-06-06

最新評論