在引导程序源代码分析的scrollspy浅谈(滚动拦截)

在引导程序源代码分析的scrollspy浅谈(滚动拦截)
文件

scrollspy.js

实现功能

1、当HashKey距离顶点设置滚动区域的有效位置,其导航指定的项目设置。

2、导航必须。导航>李>的结构,和href或数据目标上应结合HashKey

三.菜单上必须有一种导航样式。

4。滚动区域的数据目标与导航父ID(必须是父级)一致。




对ibeone一具体内容一内容具体内容具体内容之一的具体内容具体内容具体内容
的具体内容具体内容两一内容具体内容具体内容具体内容具体内容之一
对三个具体内容一个内容的一个具体内容的一个具体内容具体内容具体内容具体内容
源代码分析:

1、原理:当滚动容器HashKey位置仅偏置设置在容器的顶部,在导航的链接将被设置。

2,如果滚动区域为主体,滚动区域元素被标记为窗口(判断构造函数)。
这scrollelement =美元。美元(元),(文件。体)$(窗口):$(元)
3、getscrolheight:让滚动的容器的内容(包括隐藏的部分)

这scrollelement美元。{ 0 }。scrollheight | | math.max(这。$体{ 0 }。scrollheight,文档。文档元素}。scrollheight)
4、刷新:刷新和滚动容器存储每个HashKey值

4.1。默认偏移量用于获取位置值。如果滚动区域不是窗口,则它是以位置获得的。

如果(!美元。(这iswindow美元。scrollelement { 0 })){
offsetmethod =下
offsetbase =这。scrollelement.scrolltop美元() / /获得基础的高度,如果滚动区不参与滚动元件的计算
}
4.2、横向偏移值对应的HashKey轧制区根据导航HashKey:

这个,$身体
查找(这个选择器)
映射(函数(){())
var $ = $(这个)
VaR href = $ el.data('target')el.attr美元('href)| |
美元/ ^ VaR href #。 /。试验(href)= $(href) / /得到滚动区域对应HashKey元

收益($ href
href.length美元
href.is美元('可见')
{ { { }(offsetmethod href美元。顶)+ offsetbase,href } })| |空
})
排序(函数(A,B){返回一个{ 0 } - { 0 } })
每个函数(){()
That.offsets.push(本{ 0 })
That.targets.push(本{ 1 })
})
5、过程:滚动条的事件触发函数来计算当前导航菜单,需要强调

5.1,得到滚动容器的轧制距离:

VaR scrollTop =这scrollelement.scrolltop()+ this.options.offset美元。
5.2。滚动容器的最大轧制高度

最大高度=滚轧距离(偏移量)+滚动卷容器的内容
无功maxscroll = this.options.offset + scrollheight -这scrollelement.height美元()。
5.3。设置滚动元素逻辑:

对(我= offsets.length;我--;偏移){ / /遍历所有
activetarget!=目标{我} /判断当前目标等于activetarget
scrollTop > =偏移{我} / /轧制高>我元素偏移
(偏移{我+ 1 } =定义的| | scrollTop <偏移{我+ 1 } + / /我)1元不存在,或不大于滚动我+ 1的高度
this.activate(目标{我}) / /设置为当前活动的项目我
}
6,活动:设置指定导航菜单
7,清除:清除所有突出显示的菜单
自举程序源代码scrollspy以上分析(滚动拦截)是分享的全部内容,小编的,希望能给大家一个参考,我希望你能支持它。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部