建站资源下载详情
为您免费提供多种建站资源下载,包括网站模板下载、前端插件下载和字体下载!您只需注册为会员即可任意下载!

JQuery滚动监听组件scrollspy.js

来源:易助科技网浏览量:13收藏

简介

scrollspy.js是一款JQuery,Bootstrap滚动监听插件。


使用

1.  引入文件


<script type='text/javascript' src='/javascripts/jquery.js'></script>
<script type='text/javascript' src='/javascripts/jquery.scrollspy.js'></script>


2.  HTML


<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>


3.  调用示例


function ScrollSpy(element, options) {
  this.$body = $(document.body)
  this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
  this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
  this.selector = (this.options.target || '') + ' .nav li > a'
  this.offsets = []
  this.targets = []
  this.activeTarget = null
  this.scrollHeight  = 0
  this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
  this.refresh()
  this.process()
}


该构造函数主要作用:

1)基本设置,主要是设置当前滚动元素是设置的body还是具体的某一块元素;其次是导航的结构要是.nav li > a的结构,也就是你的菜单中也要有.nav这个class。

2)监听元素滚动的时候,执行process方法。

3)同时初始化的时候也执行了refresh与process方法。

下面讲解一下这几个方法。

1)getScrolHeight方法

获取滚动容器的内容高度(包含被隐藏部分)

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


2)refresh方法

刷新并存储滚动容器内各hashkey的值


ScrollSpy.prototype.refresh = function () {
  var that = this
  var offsetMethod = 'offset'
  var offsetBase  = 0
  this.offsets = []
  this.targets = []
  this.scrollHeight = this.getScrollHeight()
  if (!$.isWindow(this.$scrollElement[0])) {
    offsetMethod = 'position'
    offsetBase  = this.$scrollElement.scrollTop()
  }
  this.$body.find(this.selector).map(function () {
    var $el  = $(this)
    var href = $el.data('target') || $el.attr('href')
    var $href = /^#./.test(href) && $(href)
    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])
      })
    }
  }


3)process方法

滚动条事件触发函数,用于计算当前需要高亮那个导航菜单

4)active方法

设置指定的导航菜单高亮



相关链接

GitHub 地址:https://github.com/sxalexander/jquery-scrollspy