源
文件:
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以上分析(滚动拦截)是
分享的全部内容,小编的,希望能给大家一个
参考,我希望你能
支持它。