当前位置:首页 > 日记 > 正文

引导滚动组件监控scrollspy.js用法详解

引导滚动组件监控scrollspy.js用法详解
事实上,滚动监测的案例很多。例如,导航在右侧。当滚动主题的内容时,右导航对应于高亮。

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

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

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

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




对ibeone一具体内容一内容具体内容具体内容之一的具体内容具体内容具体内容
的具体内容具体内容两一内容具体内容具体内容具体内容具体内容之一
对三个具体内容一个内容的一个具体内容的一个具体内容具体内容具体内容具体内容
让我们来看一下具体代码的实现。其原理是:当在滚动容器位置偏移设置只有HashKey容器的顶部,我们将在导航设置相应的链接突出。

scrollspy构造函数
首先,创建一个构造函数,如下所示:
功能scrollspy(元,期权){
这个$ $主体= $(文件体)
这scrollelement =美元。美元(元),(文件。体)$(窗口):$(元)
this.options(scrollspy.defaults,美元。延长= {},选项)
This.selector(this.options.target = | |)+资产净值李>。
this.offsets = { }
this.targets = { }
this.activetarget = null
this.scrollheight = 0
这scrollelement.on美元('scroll。BS。scrollspy,美元。代理(this.process,这))
This.refresh()
this.process()
}
构造函数主要做什么:

1、基本设置主要是设置当前滚动体为体或特定元素。其次,导航的结构是导航结构,也就是说,在菜单中也有导航类。

2。要监视元素滚动,执行过程方法。

刷新和处理方法也在3时执行。同时初始化。

以下是其中的一些方法。

getscrolheight方法
获取滚动容器内容的内容(包括隐藏部分)

这scrollelement美元。{ 0 }。scrollheight | | math.max(这。$体{ 0 }。scrollheight,文档。文档元素}。scrollheight)
刷新的方法
Refresh and store the values of each hashkey in the scroll container

(scrollspy.prototype.refresh =功能){
var =
无功offsetmethod = 'offset
无功offsetbase = 0

this.offsets = { }
this.targets = { }
this.scrollheight = this.getscrollheight()

如果(!美元。(这iswindow美元。scrollelement { 0 })){
offsetmethod =下
offsetbase =这scrollelement.scrolltop美元()。
}

这个,$身体
查找(这个选择器)
映射(函数(){())
var $ = $(这个)
VaR href = $ el.data('target')el.attr美元('href)| |
VaR为href = / ^ #。 /。试验(href)$(链接)

收益($ href
href.length美元
href.is美元('可见')
{ { { }(offsetmethod href美元。顶)+ offsetbase,href } })| |空
})
排序(函数(A,B){返回一个{ 0 } - { 0 } })
每个函数(){()
That.offsets.push(本{ 0 })
That.targets.push(本{ 1 })
})

}

它主要体现什么

1。在默认情况下以偏移量获取位置值。如果滚动区域不是窗口,则它是以位置获得的。
如果(!美元。(这iswindow美元。scrollelement { 0 })){
offsetmethod =下
offsetbase =这scrollelement.scrolltop美元()。
}
2。相应的偏移值在轧制区HashKey横贯根据导航HashKey。
这个,$身体
查找(这个选择器)
映射(函数(){())
var $ = $(这个)
VaR href = $ el.data('target')el.attr美元('href)| |
VaR为href = / ^ #。 /。试验(href)$(链接)

收益($ href
href.length美元
href.is美元('可见')
{ { { }(offsetmethod href美元。顶)+ offsetbase,href } })| |空
})
排序(函数(A,B){返回一个{ 0 } - { 0 } })
每个函数(){()
That.offsets.push(本{ 0 })
That.targets.push(本{ 1 })
})
过程方法
滚动条的事件触发函数用于计算当前导航菜单,需要强调
(scrollspy.prototype.process =功能){
VaR scrollTop =这scrollelement.scrolltop()+ this.options.offset美元。
无功scrollheight = this.getscrollheight()
无功maxscroll = this.options.offset + scrollheight -这scrollelement.height美元()。
无功补偿= this.offsets
VaR指标= this.targets
无功activetarget = this.activetarget
Var我

如果(this.scrollheight!= scrollheight){
This.refresh()
}

如果(scrollTop = maxscroll){
返回activetarget!=(我=目标{ 1 } targets.length)this.activate(我)
}

如果(activetarget scrollTop <偏移{ 0 }){
this.activetarget = null
返回this.clear()
}

对(我= offsets.length;我--;){
activetarget!=目标{ }
scrollTop > =偏移{我}
(偏移{我+ 1 + 1 } } =定义| | scrollTop <偏移{我)
this.activate(目标{我})
}
}

主要作用:

1。获取滚动容器的滚动距离:
VaR scrollTop =这scrollelement.scrolltop()+ this.options.offset美元。
2。滚动容器的最大轧制高度:
无功maxscroll = this.options.offset + scrollheight -这scrollelement.height美元()。
三.设置滚动元素逻辑以突出显示当前匹配元素:
对(我= offsets.length;我--;){
activetarget!=目标{ }
scrollTop > =偏移{我}
(偏移{我+ 1 + 1 } } =定义| | scrollTop <偏移{我)
this.activate(目标{我})
}
积极的方法
设置指定的导航菜单以高亮显示
scrollspy.prototype.activate =函数(目标){
this.activetarget =目标

This.clear()

VaR选择器= this.selector +
数据目标++目标,+
this.selector + { href = +目标+rel=nofollow外部rel=外部nofollow

var = $(选择器)
父母(李)。
addClass(主动的)。

如果(active.parent('。下拉菜单)。长度){
积极主动=
最接近的(李。下拉)
addClass(主动的)。
}

Active.trigger('activate。BS。scrollspy)
}
明确的方法
清除所有突出显示菜单
(scrollspy.prototype.clear =功能){
$(这个选择器)
。parentsuntil(这个选项。目标,'主动')
removeClass(主动的)。
}
源代码

+函数($){
严格使用;

类定义 / / scrollspy
/ / ==========================

功能scrollspy(元,期权){
这个$ $主体= $(文件体)
这scrollelement =美元。美元(元),(文件。体)$(窗口):$(元)
this.options(scrollspy.defaults,美元。延长= {},选项)
This.selector(this.options.target = | |)+资产净值李>。
this.offsets = { }
this.targets = { }
this.activetarget = null
this.scrollheight = 0
这scrollelement.on美元('scroll。BS。scrollspy,美元。代理(this.process,这))
This.refresh()
This.process ()
}

scrollspy.version = '3.3.7

scrollspy.defaults = { {
偏移量:10
}

(scrollspy.prototype.getscrollheight =功能){
退货。$ scrollelement { 0 }。scrollheight | | math.max(这。$体{ 0 }。scrollheight,文档。文档元素}。scrollheight)
}

(scrollspy.prototype.refresh =功能){
var =
无功offsetmethod = 'offset
无功offsetbase = 0

this.offsets = { }
this.targets = { }
this.scrollheight = this.getscrollheight()

如果(!美元。(这iswindow美元。scrollelement { 0 })){
offsetmethod =下
offsetbase =这scrollelement.scrolltop美元()。
}

这个,$身体
查找(这个选择器)
映射(函数(){())
var $ = $(这个)
VaR href = $ el.data('target')el.attr美元('href)| |
VaR为href = / ^ #。 /。试验(href)$(链接)

收益($ href
href.length美元
href.is美元('可见')
{ { { }(offsetmethod href美元。顶)+ offsetbase,href } })| |空
})
排序(函数(A,B){返回一个{ 0 } - { 0 } })
每个函数(){()
That.offsets.push(本{ 0 })
That.targets.push(本{ 1 })
})

}

(scrollspy.prototype.process =功能){
VaR scrollTop =这scrollelement.scrolltop()+ this.options.offset美元。
无功scrollheight = this.getscrollheight()
无功maxscroll = this.options.offset + scrollheight -这scrollelement.height美元()。
无功补偿= this.offsets
VaR指标= this.targets
无功activetarget = this.activetarget
Var我

如果(this.scrollheight!= scrollheight){
This.refresh()
}

如果(scrollTop = maxscroll){
返回activetarget!=(我=目标{ 1 } targets.length)this.activate(我)
}

如果(activetarget scrollTop <偏移{ 0 }){
this.activetarget = null
返回this.clear()
}

对(我= offsets.length;我--;){
activetarget!=目标{ }
scrollTop > =偏移{我}
(偏移{我+ 1 + 1 } } =定义| | scrollTop <偏移{我)
this.activate(目标{我})
}
}

scrollspy.prototype.activate =函数(目标){
this.activetarget =目标

This.clear()

VaR选择器= this.selector +
数据目标++目标,+
this.selector + { href = +目标+rel=nofollow外部rel=外部nofollow

var = $(选择器)
父母(李)。
addClass(主动的)。

如果(active.parent('。下拉菜单)。长度){
积极主动=
最接近的(李。下拉)
addClass(主动的)。
}

Active.trigger('activate。BS。scrollspy)
}

(scrollspy.prototype.clear =功能){
$(这个选择器)
。parentsuntil(这个选项。目标,'主动')
removeClass(主动的)。
}
插件定义 / / scrollspy
/ / ===========================

函数插件(选项){
返回this.each(函数(){()
var $ = $(这个)
VaR数据this.data美元('bs。scrollspy)
VaR选项=类型选项= 'object'option

如果(!数据)this.data美元('bs。scrollspy ',(数据=新scrollspy(这个选项))
如果(型){ }数据选项(选项= 'String')
})
}

VaR fn.scrollspy老=美元。

美元fn.scrollspy =插件。
fn.scrollspy.constructor = scrollspy美元。
没有冲突 / / scrollspy
/ / =====================

(美元。fn.scrollspy.noconflict =功能){
fn.scrollspy =老美元。
返回此
}
scrollspy / / data-api
/阻塞

$(窗口),(负荷。BS。scrollspy。数据API,功能()){
(数据间谍)(函数(){)
var $ = $(this)
plugin.call($间谍,spy.data美元())
})
})

}(jQuery);

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。

相关文章

ps滤镜和笔刷将流体效果添加到字符

ps滤镜和笔刷将流体效果添加到字符

字符,滤镜,流体,笔刷,效果,产液和分散的观念的影响是相似的,主要有三个步骤:首先需要弄清楚的主要或分离,并将它复制到新的图层;然后用涂抹工具添加液体或流体部分长一点;最后用面膜刷控制流体区域,并更换的背景下,你可以得到预期的效果。 利用PS…

如何将视觉映射到一个excel2013表

如何将视觉映射到一个excel2013表

视觉,映射,如何将,电脑软件,在excel表格中,如果你想插入一个可视化的3D地图,你怎么插入它这是你给excel2013表插入视觉地图小地图。希望能对你有所帮助。 在excel2013表插入地图可视化 1、excel2016地图>三维地图->打开3D地图 2,设定地理位…

PS如何画出一个非常个性的蓝色气球

PS如何画出一个非常个性的蓝色气球

画出,蓝色,个性,电脑软件,PS,你想怎样画一个气球并在气球上画一个表达让我们来看看详细的教程。 软件名称:Adobe PS图象处理软件7.01官方简体中文版软件大小:154mb更新时间:2013-04-19 1、直接用圆形画出婴儿脸上的气球,用淡蓝色和黑色来填充,…

oracle中解码函数的使用

oracle中解码函数的使用

函数,解码,电脑软件,oracle,意义阐释: 解码(条件,值1,返回值1,值2,返回值2,…值n,返回值n,默认值) 这个函数的含义如下: 如果条件=值1,那么 返回(翻译值1) elsif条件=价值2 返回(翻译值2) … elsif条件= n值,然后 返回(翻译值n) 其他的 返回(默认) 最后如果 解…

PS制作水彩式校园操场

PS制作水彩式校园操场

操场,校园,电脑软件,PS,用专业的油过滤器创造出更快的效果,一到两步就能使油画的质感更加完美。之后,只需渲染颜色,处理细节,增强局部明暗效果: PS制作水彩式校园操场图片 原来的地图 首先,打开图片,复制图层,按Ctrl + J,这样我们比较前后调整效果…

Oracle两个表与一个表的数据批量更

Oracle两个表与一个表的数据批量更

批量更新,数据,相关联,两个,电脑软件,方法一(推荐): 更新表2 设置表2。 (选择B 从表1 在表1中a =表2。 在存在 (选择1 从表1 在表1中a =表2; 特别重要的是,要特别注意最后的外部条件,即锁定其批处理更新数据的范围。 方法二: 合并到表2中 用表1 在(…

如何在Dreamweaver文件面板中添加

如何在Dreamweaver文件面板中添加

文件,删除,面板,如何在,电脑软件,在Dreamweaver文件面板中,可以打开文件、更改文件名、添加、移动或删除文件,或刷新更改后的文件面板。 软件名称:Adobe Dreamweaver CC 2017 v17.0中文破解版(附破解补丁)64位软件大小:758mb更新时间:2016-11-05 …

小米手机MIUIV4不能与程序图标删除

小米手机MIUIV4不能与程序图标删除

删除,图标,小米手机,解决方案,能与,问题: 小米手机的MIUI V4系统,一键清理背景时,一些程序图标锁定,清理干净,怎么办 答案uff1a 这是一个MIUI V4的一键清理锁定功能。它可以锁定,应用程序不被清理,滑下,它可以锁定,它可以滑动,它可以解锁。 (摘自:小…

PHP使用新方法分析StdClass()创建空

PHP使用新方法分析StdClass()创建空

对象,新方法,电脑软件,PHP,StdClass,本文阐述了PHP创建空的对象用新的方式(StdClass)。分享给您参考,如下: PHP可以使用$对象=新StdClass();创建一个空的对象没有一个成员方法和属性。 很多时候,程序员会使用数组中的参数配置项等信息,但是数组操…

如何在ps中使用模糊工具

如何在ps中使用模糊工具

工具,模糊,如何在,电脑软件,ps,我们知道ps软件的所有内容,但是你知道ps中的模糊工具吗事实上,PS图象处理软件的模糊工具包含三种工具。它们是模糊工具、锐化工具和涂抹工具。这个工具的快捷键是字母R.Let的学习一点关于它。 模糊工具在ps中…

hammer.js实现手势放大图像

hammer.js实现手势放大图像

手势,图像图像,电脑软件,hammer,js,这个例子给大家分享hammer.js实现具体的编码图像的手势放大效果,供大家参考,以下具体内容 图片/缩放手势 无功reqanimationframe =(函数(){() 返回窗口{ Hammer.prefixed(窗口,'requestanimationframe)函数(回调){ |…

为解决在Excel2007打印区域虚线教

为解决在Excel2007打印区域虚线教

区域,教程,虚线,电脑软件,当完成打印准备文件时,突然发现打印区域出现了虚线。如何解决这里是一个为萧边带来Excel2007打印区域虚线解教程,供大家参考。 为解决在Excel2007打印区域虚线教程 打印出虚线解决方案步骤1:在Excel左上角找到Windo…