最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

全面解析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)文章

  • ant design中實(shí)現(xiàn)table的表格行的拖拽

    ant design中實(shí)現(xiàn)table的表格行的拖拽

    這篇文章主要介紹了ant design中實(shí)現(xiàn)table的表格行的拖拽,文章圍繞table表格行拖拽實(shí)現(xiàn)的相關(guān)資料展開詳細(xì)的代碼內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • javascript設(shè)計(jì)模式 – 代理模式原理與用法實(shí)例分析

    javascript設(shè)計(jì)模式 – 代理模式原理與用法實(shí)例分析

    這篇文章主要介紹了javascript設(shè)計(jì)模式 – 代理模式,結(jié)合實(shí)例形式分析了javascript代理模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 用Javascript獲取頁面元素的具體位置

    用Javascript獲取頁面元素的具體位置

    制作網(wǎng)頁的過程中,你有時(shí)候需要知道某個(gè)元素在網(wǎng)頁上的確切位置,在接下來的文章中為大家介紹下使用js是如何實(shí)現(xiàn)的
    2013-12-12
  • JS中比較冷門但非常好用的方法總結(jié)

    JS中比較冷門但非常好用的方法總結(jié)

    在Js中有一些比較冷門但是非常好用的方法,我在這里稱之為高級(jí)方法,這些方法沒有被廣泛使用或多或少是因?yàn)榇嬖谝恍┘嫒菪缘膯栴},不是所有的瀏覽器都讀得懂的,這篇文章主要就是對(duì)這些方法做一個(gè)總結(jié),讓我們一起來看一下吧
    2023-06-06
  • Three.JS實(shí)現(xiàn)三維場景

    Three.JS實(shí)現(xiàn)三維場景

    這篇文章主要為大家詳細(xì)介紹了Three.JS實(shí)現(xiàn)三維場景,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • js獲取字符串字節(jié)數(shù)方法小結(jié)

    js獲取字符串字節(jié)數(shù)方法小結(jié)

    這篇文章主要介紹了js獲取字符串字節(jié)數(shù)方法,實(shí)例總結(jié)了javascript字符串長度計(jì)算的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • JS使用隊(duì)列對(duì)數(shù)組排列,基數(shù)排序算法示例

    JS使用隊(duì)列對(duì)數(shù)組排列,基數(shù)排序算法示例

    這篇文章主要介紹了JS使用隊(duì)列對(duì)數(shù)組排列,基數(shù)排序算法,涉及javascript隊(duì)列的定義、使用,基數(shù)排序?qū)崿F(xiàn)方法等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • js函數(shù)與php函數(shù)的區(qū)別實(shí)例淺析

    js函數(shù)與php函數(shù)的區(qū)別實(shí)例淺析

    這篇文章主要介紹了js函數(shù)與php函數(shù)的區(qū)別,以實(shí)例形式較為簡單的分析了js函數(shù)與php函數(shù)語法及應(yīng)用上的不同點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • BootStrap中的Fontawesome 圖標(biāo)

    BootStrap中的Fontawesome 圖標(biāo)

    這篇文章主要介紹了BootStrap中Fontawesome 圖標(biāo)的相關(guān)知識(shí),需要的朋友可以參考下
    2017-05-05
  • JavaScript截屏功能的實(shí)現(xiàn)代碼

    JavaScript截屏功能的實(shí)現(xiàn)代碼

    我覺得使用JS截圖的想法是非?;闹嚨?,首先JS沒有權(quán)限調(diào)用操作系統(tǒng)的截圖功能,其次,瀏覽器(BOM)也沒有提供相關(guān)的截圖接口,經(jīng)過一番折騰,有點(diǎn)思路了,下面通過實(shí)例代碼給大家簡單介紹下js 截屏功能的實(shí)現(xiàn)代碼,一起看看吧
    2017-07-07

最新評(píng)論

平武县| 安西县| 南雄市| 西安市| 微博| 上思县| 崇义县| 清水河县| 彰化县| 垦利县| 中宁县| 衡阳县| 东乡族自治县| 定州市| 比如县| 贺兰县| 鹿邑县| 凤庆县| 银川市| 阿合奇县| 辛集市| 平泉县| 三江| 香河县| 乌兰县| 左贡县| 增城市| 青州市| 尼勒克县| 瓦房店市| 和政县| 玛沁县| 屯昌县| 大庆市| 舟曲县| 长垣县| 依兰县| 金乡县| 洛阳市| 志丹县| 玉环县|