素材牛VIP会员

拖动滚动条实现侧栏导航定位效果

 浏览:616次-  评论:0次-  发布时间:2017-05-10
    Html
    Css
    Js
↑上面代码改变,会自动显示代码结果
jQuery调用版本:1.9.0
素材牛VIP永久特权
积分说明:注册即送10牛币,每日签到可获得5牛币,成为VIP会员可永久免牛币下载!   充值积分   充值会员   更多说明»
代码描述:大家可能看到过这样的导航效果,那就是拖动滚动条的时候,能够实现侧栏导航定位效果。也就是说没到滚动条移动到一个栏目位置,那么侧栏导航也能够实现定位,下面就通过代码实例详细介绍一下如何实现此功能,需要的朋友可以做一下参考。

代码注释:

(1).左侧导航条固定效果是由如下代码实现的:

ul {
  position: fixed;
  height: 40px;
  line-height: 40px;
  top: 100px;
}

top值等于100px要特别注意一下,因为后面会用到。

(2).鼠标悬浮导航栏目实现变色效果是由如下代码实现的:

ul {
  position: fixed;
  height: 40px;
  line-height: 40px;
  top: 100px;
}

(3).$(function () {}),当文档结构完全加载完毕再去执行函数中的代码。

(4).$('li').on('click', function () {}),为li元素注册时间处理函数,当点击li元素的时候也能够实现导航效果。

(5).var index = $(this).index(),获取当前点击li元素的索引值。

(6).var scrollTo = $('.content').eq(index).offset().top,获取对应索引的div元素距离文档顶端的距离。

(7).$('body').animate({  scrollTop: scrollTo

}, 200),以动画方式设置body的scrollTop值,这样就会使对应索引的div块顶端到达窗口顶端。

(8).$(this).addClass('active').siblings().removeClass('active'),为当前元素添加名称为active的样式类,其他的li元素则删除它,于是就实现了当前li元素呈现绿色的效果。

(9).var barItemTops = [],声明一个数组,后面会用到。

(10).$('li').each(function (index, element) {  

  barItemTops.push($(this).position().top + 100);

}),获取每一个li元素的position().top值,再加上100,恰好是每一个li元素顶端,距离窗口顶端的尺寸。

(11).$(window).on('scroll', function () {}),为window注册scroll事件处理函数。

(12).var winScrollTop = $(this).scrollTop(),网页向上滚动的尺寸。

(13).$('.content').each(function (index, element) {}),遍历每一个div元素。

(14).var selfOffsetTop = $(this).offset().top,获取div元素距离文档顶部的距离。

(15).if (0 <= selfOffsetTop - winScrollTop && selfOffsetTop - winScrollTop < barItemTops[index]) {

  $('li').eq(index).addClass('active').siblings().removeClass('active');

},selfOffsetTop - winScrollTop值就是div元素的顶端距离窗口顶端的尺寸。

也就是如果这个尺寸大0并且小于侧边栏导航对应的li元素顶端距离窗口顶端的距离,那么将设置对应li元素的相关样式。

讨论这个常用代码(0)回答他人问题或分享心得会奖励牛币

〒_〒 居然一个评论都没有……

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的积分余额:0 已下载次数:616
所需牛币:5 开始下载

牛币获取:签到、评论、充值    » 在线充值(10牛币=1元)