亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 21:42:33
字體:
來源:轉載
供稿:網友

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

方位

根據當前鼠標所處的位置不同,箭頭所指向的方向也不同:

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


優先級

以上各種情況優先級依次降低

探測思路

探測基本思路是:

首先,也是前提條件,判斷容器的高或寬是否是彈窗對應的高或寬的兩倍,之所以是兩倍,因為臨界點是目標容器的各個邊的中點

/*
* 先判斷目標容器的高度或者寬度是否是容器對應高度或寬度與箭頭尺寸之和的兩倍,否則,報錯。之所以是2倍,因為臨界點是目標容器的各個邊的中點。
*/

接下來,可以依據優先級去逐個判斷:

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

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

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

* 缺省是左側,頂部。
*/

具體情況判斷:

•根據優先級,先判斷鼠標右側能否放下彈窗:

◦能放下,則去判斷能否再放進個箭頭

■若能放下

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

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

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

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

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

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

■能,則為top-left

■否則,為bottom-left

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

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

舉例top-left

復制代碼 代碼如下:

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

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

同樣以top-left為例

復制代碼 代碼如下:

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品久久久久久久99热浪潮| 精品中文字幕在线观看| 亚洲国产毛片完整版| 日韩一区二区精品视频| 91精品国产免费久久久久久| 国产女人18毛片水18精品| 久久久精品亚洲| 亚洲欧美精品在线| 亚洲成人xxx| 亚洲天堂免费在线| 亚洲欧美日韩爽爽影院| 久久久噜久噜久久综合| 亚洲自拍中文字幕| 一区二区三欧美| 日韩av电影手机在线观看| 日韩精品高清在线观看| 国产精品极品美女粉嫩高清在线| 国产主播喷水一区二区| 欧美日韩精品二区| 日韩在线免费视频观看| 国产精品wwww| 国产成人精品久久亚洲高清不卡| 26uuu另类亚洲欧美日本老年| 精品亚洲男同gayvideo网站| 日韩在线视频网站| 国产精品吴梦梦| 日韩在线中文视频| 亚洲性线免费观看视频成熟| 久久精品中文字幕免费mv| 亚洲精品国精品久久99热一| 日韩电视剧在线观看免费网站| 欧美成人在线影院| 日韩欧美高清视频| 亚洲精品日韩激情在线电影| 欧美性感美女h网站在线观看免费| 国产主播欧美精品| 亚洲免费中文字幕| 一色桃子一区二区| 亚洲人成电影在线观看天堂色| 亚洲综合在线做性| 日韩亚洲精品视频| 欧美激情一区二区久久久| 午夜免费在线观看精品视频| 国产精品69久久久久| 久久黄色av网站| 美女av一区二区三区| 国产精品美女久久久久久免费| 亚洲自拍偷拍第一页| 热久久视久久精品18亚洲精品| 欧美色道久久88综合亚洲精品| 中文字幕在线观看亚洲| 欧美性生活大片免费观看网址| 亚洲偷熟乱区亚洲香蕉av| 成人国产精品久久久| 伊是香蕉大人久久| 亚洲一区二区久久久| 中文字幕亚洲综合| 爽爽爽爽爽爽爽成人免费观看| 欧美日韩一区二区三区| 色七七影院综合| 国产精品久久久av| 91中文字幕一区| 欧美亚洲另类在线| 久久精品国产清自在天天线| 国产精品美女久久| 日本欧美在线视频| 亚洲a在线播放| 九九热精品在线| 亚州精品天堂中文字幕| 国产一区二区三区在线免费观看| 国产精品天天狠天天看| 91精品成人久久| 欧美激情xxxx| 精品久久久久久久久久久| 亚洲精品一二区| 91精品啪在线观看麻豆免费| 欧美激情一区二区三区在线视频观看| 欧美大尺度电影在线观看| 国产精品专区第二| 日本三级久久久| 国产一区二区三区在线免费观看| 日韩黄色高清视频| 亚洲国内精品在线| 亚洲精品黄网在线观看| 青青草原成人在线视频| 国产精品午夜一区二区欲梦| 亚洲高清av在线| 欧美激情视频给我| 久久99久久久久久久噜噜| 国产精品久久久久久久一区探花| 亚洲精品免费在线视频| 97成人精品区在线播放| 国产精品草莓在线免费观看| 欧洲美女7788成人免费视频| 欧美日韩免费看| 精品成人69xx.xyz| 欧美另类暴力丝袜| 欧美综合在线观看| 亚洲福利影片在线| 久久精品小视频| 精品一区精品二区| 成人免费网视频| 中文字幕日韩综合av| 亚洲综合中文字幕在线| 日韩av在线最新| 日韩免费电影在线观看| 欧美日韩国产精品一区| 欧美中文在线观看国产| 亚洲男女性事视频| 最新亚洲国产精品| 一个人看的www久久| 日韩国产精品视频| 欧美日韩视频免费播放| 中文日韩在线观看| 中文字幕亚洲一区| 久久频这里精品99香蕉| 国产精品视频久久久久| 国产成人免费91av在线| 亚洲国产美女久久久久| 午夜精品99久久免费| 欧美高清性猛交| 91精品国产91久久久久久| 91精品国产综合久久香蕉922| 欧美激情中文字幕在线| 国产精选久久久久久| 国产精品黄色影片导航在线观看| 欧美一级视频免费在线观看| 色妞色视频一区二区三区四区| 国产精品一区二区av影院萌芽| 欧美大人香蕉在线| 隔壁老王国产在线精品| 欧美日韩在线视频一区| 国产午夜精品美女视频明星a级| 26uuu另类亚洲欧美日本老年| 日韩中文字幕在线视频播放| 国产精品久久久久久av福利软件| 国产精品三级网站| 一区二区三区视频免费在线观看| 在线日韩精品视频| 亚洲第一色中文字幕| 欧美高清一级大片| 69影院欧美专区视频| 77777亚洲午夜久久多人| 久久久久久999| 91九色视频在线| 久久天天躁夜夜躁狠狠躁2022| 夜色77av精品影院| 亚洲精品欧美日韩专区| 亚洲人精品午夜在线观看| 国产精品91免费在线| 久久人人看视频| 亚洲影影院av| 亚洲欧洲偷拍精品| 97久久久免费福利网址| 色播久久人人爽人人爽人人片视av| 18久久久久久| 国产精品日韩精品| 亚洲国产精品成人一区二区| 欧美在线日韩在线| 中日韩午夜理伦电影免费| 久久久久中文字幕2018| 亚洲美女精品成人在线视频| 久久久久久网址| 91免费在线视频网站|