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

全面解析Bootstrap中tooltip、popover的使用方法

 更新時(shí)間:2016年06月13日 08:35:51   作者:小龍女先生  
這篇文章主要為大家詳細(xì)解析了Bootstrap中tooltip、popover的使用方法,了解提示框、彈出框的實(shí)現(xiàn)原理,感興趣的朋友可以參考一下

一、tooltip(提示框)
 源碼文件:
 Tooltip.js
Tooltip.scss

實(shí)現(xiàn)原理: 
1、獲取當(dāng)前要顯示tooltip的元素的定位信息(top、left、bottom、right、width、height等)
2、計(jì)算tooltip的位置,是top、left、bottom、right其中一個(gè)
3、然后根據(jù)計(jì)算的位置值,運(yùn)算出坐標(biāo)值
4、給tooltip應(yīng)用坐標(biāo)值 

源碼分析: 
1、ownerDocument:文檔;包含兩個(gè)對(duì)象:<DocType>、documentElement(根節(jié)點(diǎn))
2、$.contains(domA, domB):判斷domA是否包含domB元素
3、應(yīng)用了offset.setOffset方法,傳入了using參數(shù),因?yàn)閛ffset設(shè)置值的時(shí)候,不能四舍五入
4、$viewport:顯示tooltipr的容器元素
5、getPosition:此函數(shù)獲取元素定位坐標(biāo)相關(guān)的信息,如:top、left、bottom、right、width、height、scroll等
  5.1、共用到了getBoundingClientRect方法,但此方法在IE8-會(huì)插件width、height
  5.2、如果是body,width、height會(huì)被重置為window的
  5.3、源碼如下: 

$element = $element || this.$element //如果沒有傳入?yún)?shù),則以$element(觸發(fā)tooltip事件的元素)為準(zhǔn)

 var el = $element[0]
 var isBody = el.tagName == 'BODY'

 var elRect = el.getBoundingClientRect()
 if (elRect.width == null) {
 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
 }
 var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
 var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
 var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null

return $.extend({}, elRect, scroll, outerDims, elOffset)

6、getCalculatedOffset:計(jì)算tooltip的坐標(biāo)值,利用的是width、height折半原理實(shí)現(xiàn)
  6.1、bottom時(shí)
    6.1.1、top為定位元素(pos)的top+ 定位元素(pos)的高度
    6.1.2、left為定位元素(pos)的Left – 定位元素(pos)的寬度/2 – tooltip元素寬度/2
  6.2、top時(shí)
    6.2.1、top為定位元素(pos) 的top-tooltip元素的高度
    6.2.2、left為定位元素(pos)的left – 定位元素(pos)的寬度/2 – tooltip元素寬度/2
  6.3、left時(shí)
    6.3.1、top為定位元素(pos)的top – 定位元素(pos)的高度/2 – tooltip元素高度/2
    6.3.2、left為定位元素(pos)的left – tooltip元素的寬度
  6.4、right時(shí)
    6.4.1、top為定位元素(pos)的top – 定位元素(pos)高度/2 – tooltip元素高度/2
    6.4.2、left為定位元素(pos)的left + 定位元素(pos)寬度

 

 6.5、小三角的位置,一般情況下元素的50%的位置,但如果出現(xiàn)tooltip被left、top、right、bottom隱藏的時(shí)候,就需要重新計(jì)算和調(diào)整位置了。方法名為:getViewportAdjustedDelta
     6.5.1、首先計(jì)算出被overflow的寬度、或者高度
     6.5.2、然后計(jì)算出arrowDelta的值,隱藏值 * 2 –tooltip寬度 + tooltip寬度
     6.5.3、設(shè)置三角的top或left百分比的值 

二、Popover(彈出框)
 源碼文件: 
Popover.js
Popover.scss

實(shí)現(xiàn)原理: 
1、繼承tooltip實(shí)現(xiàn)的
2、多了一個(gè)標(biāo)題,還可以自定義content(里面可以插入input、button等交互控件)

如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附3個(gè)精彩的專題:

Bootstrap學(xué)習(xí)教程

Bootstrap實(shí)戰(zhàn)教程

Bootstrap插件使用教程

以上就是本文的全部內(nèi)容,希望對(duì)大家學(xué)習(xí)javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 微信小程序錯(cuò)誤this.setData報(bào)錯(cuò)及解決過程

    微信小程序錯(cuò)誤this.setData報(bào)錯(cuò)及解決過程

    這篇文章主要介紹了微信小程序錯(cuò)誤this.setData報(bào)錯(cuò)及解決過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • js的函數(shù)的按值傳遞參數(shù)(實(shí)例講解)

    js的函數(shù)的按值傳遞參數(shù)(實(shí)例講解)

    下面小編就為大家分享一篇js的函數(shù)的按值傳遞參數(shù)的實(shí)例,具有很好的參考價(jià)值,一起跟隨小編過來看看吧,希望對(duì)大家有所幫助
    2017-11-11
  • js解決event.keyCode在Firefox中失效的問題

    js解決event.keyCode在Firefox中失效的問題

    這篇文章主要介紹了js解決event.keyCode在Firefox中失效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Javascript數(shù)組去重的幾種方法詳解

    Javascript數(shù)組去重的幾種方法詳解

    下面小編就為大家?guī)硪黄狫avascript數(shù)組去重的幾種方法詳?shù)慕榻B。小編覺得聽錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看
    2021-09-09
  • js中日期的加減法

    js中日期的加減法

    JavaScript實(shí)現(xiàn)日期加減計(jì)算功能代碼實(shí)例,因?yàn)樵趈s中沒有類似C#中的AddDays方法,所以要想實(shí)現(xiàn)日期加減的話,就需要自己寫函數(shù)來實(shí)現(xiàn)。
    2015-05-05
  • jquery的$(document).ready()和onload的加載順序

    jquery的$(document).ready()和onload的加載順序

    最近在改一個(gè)嵌入在frame中的頁面的時(shí)候,使用了jquery做效果,而頁面本身也綁定了onload事件。改完后,F(xiàn)irefox下測(cè)試正常流暢,IE下就要等個(gè)十幾秒jquery的效果才出現(xiàn),黃花菜都涼了。
    2010-05-05
  • javascript實(shí)例分享---具有立體效果的圖片特效

    javascript實(shí)例分享---具有立體效果的圖片特效

    此實(shí)例,直接粘貼代碼即可運(yùn)行,當(dāng)然圖片的路徑不要忘記改了。
    2014-06-06
  • JavaScript改變HTML元素的樣式改變CSS及元素屬性

    JavaScript改變HTML元素的樣式改變CSS及元素屬性

    改變CSS及元素屬性的方法有很多,在本文將為大家介紹下使用js是如何做到的,感興趣的朋友可以感受下
    2013-11-11
  • 深入淺析同源策略和跨域訪問

    深入淺析同源策略和跨域訪問

    同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響。可以說Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)
    2015-11-11
  • javascript setTimeout()傳遞函數(shù)參數(shù)(包括傳遞對(duì)象參數(shù))

    javascript setTimeout()傳遞函數(shù)參數(shù)(包括傳遞對(duì)象參數(shù))

    由于需要,我要用到setTimeout()并且在里邊的函數(shù)參數(shù)傳遞一個(gè)參數(shù),就像這樣setTimeout("fun(參數(shù))", 1000)。但是以我這種寫法,js會(huì)報(bào)錯(cuò),說‘參數(shù)’未定義。
    2010-04-04

最新評(píng)論