ScrollWatch是一个强大且可定制的jQuery scrollspy插件,它可以确定您正在查看的活动页面部分,并在垂直页面滚动上突出显示相应的导航链接。
既适用于可滚动容器,也适用于整个文档。
1.在结束body标记之前包含jQuery库和jQuery ScrollWatch插件。
<script src="//code.jquery.com/jquery.min.js"></script> <script src="src/scrollwatch.js"></script>
2.将ScrollWatch连接到给定的部分。
// selections: selector or an array of elements // callback: function to invoke when the focus changes // options: option array $(sections).scrollWatch(callback, options)
3.当你向下滚动网页时,为导航链接分配一个“活动”类。
// $(sections).scrollWatchMapTo(items, activeClass, options) $('section').scrollWatchMapTo('ul.menu > li', null, { resolutionMode: 'focus-line', viewMarginTop: 53 });
<ul class="menu"> <li><a href="#s1">Section 1</a></li> <li><a href="#s2">Section 2/a></li> <li><a href="#s3">Section 3</a></li> ... </ul>
4.所有可能的自定义选项。
{ // DOM element to spy scrolling events scroller: null, // True: the callback is invoked only when the active section changes // False: the callback is invoked on every pulse (e.g. on scroll and resize). throttle: true, // height - section that is occupying the largest portion of the view is chosen // focus-line - section that is directly intersecting or is closest to the focus line is chosen // custom - use a custom resolver // none - no resolution is performed (all candidates will be passed to the callback) resolutionMode: 'height', // Function to invoke when a focus candidate resolution is needed. // It must choose and return a single focus object. resolver: null, // in pixels topDownWeight: 0, viewMarginTop: 0, viewMarginBottom: 0, stickyOffsetTop: 5, stickyOffsetBottom: 5, // When enabled, the space between two sections is considered a part of the first section. // Useful when there are large gaps between sections. clamp: false, // Percentage of the view height that determines position of the focus line focusRatio: 0.38196601125010515, // Offset added to position of the focus line position after focusRatio is applied focusOffset: 0, // Debug mode debugFocusLine: false }
v2.2.0 (2021-11-28)