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

首頁 > 編程 > JavaScript > 正文

淺談bootstrap源碼分析之scrollspy(滾動偵聽)

2019-11-20 09:47:28
字體:
來源:轉載
供稿:網友

源碼文件:

Scrollspy.js

實現功能

1、當滾動區域內設置的hashkey距離頂點到有效位置時,就關聯設置其導航上的指定項

2、導航必須是 .nav > li > a 結構,并且a上href或data-target要綁定hashkey

3、菜單上必須有.nav樣式

4、滾動區域的data-target與導航父級Id(一定是父級)要一致

<div id="selector" class="navbar navbar-default">  <ul class="nav navbar-nav">    <li><a href="#one">one</a> </li>    <li><a href="#two">two</a> </li>    <li><a href="#three">three</a> </li>  </ul></div><div data-spy="scroll" data-target="#selector" style="height:100px; overflow:hidden;overflow-y: auto;" >  <h4 id="one" >ibe</h4><p>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/></p>  <h4 id="two" >two</h4><p>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/></p>  <h4 id="three" >three</h4><p>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/>One的具體內容<br/></p></div>

源碼分析:

1、原理:當滾動容器內的hashkey位置距離容器頂部只有 offset設置的值,就會設置導航中對應的href高亮

2、如果滾動區域是body,會將滾動區域元素標記為window(構造函數中判斷)

this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)

3、getScrolHeight:獲取滾動容器的內容高度(包含被隱藏部分)

this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)

4、refresh:刷新并存儲滾動容器內各hashkey的值

4.1、默認用offset來獲取定位值,如果滾動區域不是window則用position來獲取

if (!$.isWindow(this.$scrollElement[0])) {   offsetMethod = 'position'   offsetBase  = this.$scrollElement.scrollTop() //獲取基礎高度,如果滾動區域內有不參與滾動計算的內容  }

4.2、根據導航上的hashkey來遍歷獲取 滾動區域內的hashkey對應的offset值:

this.$body   .find(this.selector)   .map(function () {    var $el  = $(this)    var href = $el.data('target') || $el.attr('href')    var $href = /^#./.test(href) && $(href) //獲取滾動區域內的hashkey對應的元素    return ($href     && $href.length     && $href.is(':visible')     && [[$href[offsetMethod]().top + offsetBase, href]]) || null   })   .sort(function (a, b) { return a[0] - b[0] })   .each(function () {    that.offsets.push(this[0])    that.targets.push(this[1])   })

5、process:滾動條事件觸發函數,用于計算當前需要高亮那個導航菜單

5.1、獲取滾動容器已滾動距離:

var scrollTop  = this.$scrollElement.scrollTop() + this.options.offset

5.2、滾動容器可以滾動的最大高度

//最大可以滾動高度=滾動設置距離(offset)+ 滾動容器內容高度 - 滾動容器設置的高度var maxScroll  = this.options.offset + scrollHeight - this.$scrollElement.height()

5.3、設置滾動元素邏輯:

for (i = offsets.length; i--;) {//遍歷所有的offset   activeTarget != targets[i] //判斷當前target是否等于activeTarget    && scrollTop >= offsets[i] //滾動高度>i元素的offset    && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) //i + 1元素不存在,或者i+1元素不大于滾動高度    && this.activate(targets[i]) //設置i為當前活動項  }

6、active:設置指定的導航菜單高亮

7、clear:清除所有高亮菜單

以上這篇淺談bootstrap源碼分析之scrollspy(滾動偵聽)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成电影网站色| 欧美另类99xxxxx| 国产午夜精品免费一区二区三区| www.日韩不卡电影av| 国产区精品在线观看| 亚洲女同性videos| 国产精品第三页| 日韩精品视频观看| 国产伦精品免费视频| 777午夜精品福利在线观看| 精品性高朝久久久久久久| 91在线视频免费| 黑人与娇小精品av专区| 午夜精品视频网站| 疯狂做受xxxx欧美肥白少妇| 2018国产精品视频| 亚洲欧美日韩网| 欧美性资源免费| 欧美激情亚洲一区| 日韩av中文在线| 97国产在线视频| 欧美猛交ⅹxxx乱大交视频| 国产丝袜视频一区| 欧美激情亚洲综合一区| 97久久精品视频| 欧美另类精品xxxx孕妇| 日韩美女在线观看| 国产乱肥老妇国产一区二| 欧美一级片久久久久久久| 成人免费网站在线观看| 国产激情久久久久| 欧美日韩国产综合视频在线观看中文| 亚洲一区二区三区成人在线视频精品| 亚洲国产精品va在看黑人| 日韩中文字幕视频| 色噜噜狠狠狠综合曰曰曰| 成人写真视频福利网| 欧美激情一级精品国产| 91久久久久久国产精品| 欧美激情精品久久久久久蜜臀| 日韩中文字幕精品| 欧美黑人性视频| 日韩欧美国产高清91| xxxx欧美18另类的高清| 91亚洲午夜在线| 国产欧美日韩中文字幕在线| 中文字幕欧美精品日韩中文字幕| 丝袜一区二区三区| 久久精品视频在线| 福利视频一区二区| 欧美激情a在线| 亚洲激情视频在线观看| 亚洲二区在线播放视频| 欧美国产日韩二区| 亚洲精品国产精品乱码不99按摩| 欧美激情亚洲视频| 久久91精品国产| 国产一区二区三区直播精品电影| 欧美精品www| 亚洲最大福利视频| 国产精品日韩久久久久| 55夜色66夜色国产精品视频| 日韩国产精品视频| 久久99久久99精品中文字幕| 精品视频一区在线视频| 欧美在线精品免播放器视频| 欧美一级大胆视频| 欧美麻豆久久久久久中文| 川上优av一区二区线观看| 亚洲精品www久久久久久广东| 国产精品久久久久久久久久99| 久久综合伊人77777蜜臀| 亚洲精品成人久久| 亚洲乱码av中文一区二区| 国产热re99久久6国产精品| 国外成人在线视频| 青青在线视频一区二区三区| 欧洲永久精品大片ww免费漫画| 日韩亚洲欧美成人| 精品成人69xx.xyz| 欧美性猛交xxxx免费看漫画| 久久综合五月天| 日韩在线视频导航| xxxxx成人.com| 国产亚洲综合久久| 国产在线98福利播放视频| 亚洲精品福利资源站| 日韩精品中文字幕在线播放| 成人黄色在线播放| 国产精品大陆在线观看| 国产精品久久久久久久久久免费| 国产成人精品综合久久久| 欧美伊久线香蕉线新在线| 国产一区深夜福利| 成人福利在线视频| 久久久av亚洲男天堂| 亚洲一区亚洲二区亚洲三区| 亚洲综合在线播放| 国产啪精品视频网站| 欧美日韩一区二区免费视频| 亚洲伊人久久大香线蕉av| 欧美日韩亚洲一区二| 久久视频在线视频| 国产精品旅馆在线| 久久99精品国产99久久6尤物| 久久久久久久网站| 亚洲激情自拍图| 亚洲美女中文字幕| 久久最新资源网| 精品福利一区二区| 久久久噜久噜久久综合| 中文字幕欧美专区| 国产精品久久久久99| 欧美成人免费播放| 粉嫩老牛aⅴ一区二区三区| 精品国产31久久久久久| 人人爽久久涩噜噜噜网站| 久久久久久久久久久av| 在线观看日韩欧美| 国产91ⅴ在线精品免费观看| 精品一区二区三区四区| 国产精品久久久久久影视| 亚洲永久在线观看| 国产精品 欧美在线| 亚洲精品欧美日韩专区| 久久视频在线免费观看| 亚洲电影av在线| 国产v综合ⅴ日韩v欧美大片| 日韩av在线免费看| 中文字幕一区二区三区电影| 久久精品欧美视频| 国产综合香蕉五月婷在线| 中文字幕欧美在线| 亚洲最大的成人网| 国产亚洲欧洲高清| 91在线精品视频| 欧美激情一区二区三区在线视频观看| 日韩高清免费观看| 久久久久久九九九| 欧美做爰性生交视频| 青草成人免费视频| 日本国产高清不卡| 91免费福利视频| 亚洲欧美精品一区二区| 欧美裸体xxxx极品少妇| 亚洲最大的免费| 亚洲国产私拍精品国模在线观看| 欧美老少做受xxxx高潮| 久久精品视频在线| 成人国产精品一区二区| www欧美日韩| 亚洲黄色片网站| 成人写真视频福利网| 亚洲a在线播放| 国产91在线视频| 92看片淫黄大片看国产片| 91九色国产视频| 欧美在线免费观看| 国产日产久久高清欧美一区| 一区二区欧美激情| 久久久久久久久久久人体| 国模精品视频一区二区| 亚洲片在线观看| 国产精品av在线播放|