jQuery仿天猫左侧导航滚动效果

jQuery仿天猫左侧导航滚动效果

添加时间:2021-03-05 00:48:22
站长推荐丨赞助论坛,可获取海量资源终身免费下载权限奥!
举报 举报
收藏
预览
附件 附件
  • 模板类型模板类型:图标导航
  • 模板颜色模板颜色:中级
  • 下载积分下载积分:28 米粒
  • 下载权限下载权限:

    赞助会员

今天我们要实现的效果是:1、当点击菜单项时,可以平滑地滚动到页面指定的位置。2、当页面滚动时,菜单也随着滚动。3、当页面滚动到菜单项对应位置时,当前菜单项为选中样式。
jQuery仿天猫左侧导航滚动效果
分类:导航菜单 > 图标导航 难易:中级

HTML

我们设置5个导航菜单,对应5个区域,html代码如下:

<ul class="nav"> 
   <li><a class="pro">网站模板</a></li> 
   <li><a class="news">网页特效</a></li> 
   <li><a class="ser">字体下载</a></li> 
   <li><a class="con">网页源码</a></li> 
   <li><a class="job">图标下载</a></li> 
</ul> 
<div id="pro" class="box"> 
   <h3>网站模板</h3> 
  </div> 
  <div id="news" class="box"> 
   <h3>网页特效</h3> 
  </div> 
  <div id="ser" class="box"> 
   <h3>字体下载</h3> 
  </div> 
  <div id="con" class="box"> 
   <h3>网页源码</h3> 
  </div> 
  <div id="job" class="box" style="height:880px"> 
   <h3>图标下载</h3> 
</div>

当单击菜单项时,我们可以获取到当前class,根据class我们可以算出到顶端的距离。接着用动画效果滑动到菜单对应指定位置。最后记得选中当前点击菜单,也就是加上“.cur”。

若是您想要其他动画效果滚动,可以参考 <a href='https://jy.tp.yuanmeng.life/js/18.html' target='_blank'>jquery.easing动画插件</a>。

$(function(){ 
    $(".nav li a").click(function() { 
        var el = $(this).attr('class'); 
         $('html, body').animate({ 
             scrollTop: $("#"+el).offset().top 
         }, 300); 
        //切换菜单样式 
        $(this).addClass("cur").parent().siblings().find("a").removeClass("cur"); 
     }); 
});

还有一点,当滚动条达到某个菜单对应的节点,我们也要对此作出反应,告知用户正在浏览对应的是页面哪个节点的内容。

首先获取每个菜单对应的节点与页面顶部的距离,然后当页面滚动scroll时,获取页面滚动条的便宜距离scroH,最后将这两个值进行比较,设置对应的菜单项为选中状态。

$(function(){ 
    var pro_top = $("#pro").offset().top; //距顶端的距离 
    var news_top = $("#news").offset().top; 
    var ser_top = $("#ser").offset().top; 
    var con_top = $("#con").offset().top; 
    var job_top = $("#job").offset().top; 
 
    $(window).scroll(function(){//滚动时触发
        var scroH = $(this).scrollTop(); //获取滚动条位置 
        if(scroH>=job_top){ 
            set_cur(".job");//设置选中状态 
        }else if(scroH>=con_top){ 
            set_cur(".con"); 
        }else if(scroH>=ser_top){ 
            set_cur(".ser"); 
        }else if(scroH>=news_top){ 
            set_cur(".news"); 
        }else if(scroH>=pro_top){ 
            set_cur(".pro"); 
        } 
    }); 
    ... 
});

set_cur()设置当前菜单选中状态:

function set_cur(n){ 
    if($(".nav a").hasClass("cur")){ 
        $(".nav a").removeClass("cur"); 
    } 
    $(".nav a"+n).addClass("cur"); 
}

最后还有一个问题需要处理:当浏览器窗口宽度大于内容区和菜单宽度时,保持菜单悬浮在内容区左侧。

$(window).resize(function(){//窗口大小发生变化 
  navpos(); 
}); 
//根据宽度设置菜单距左边的距离
function navpos(){ 
    var offset = $("#main").offset().left; 
    var nav_w = $(".nav").outerWidth(); 
    var left = offset-nav_w; 
     
    if(left>10){ 
        $(".nav").css("margin-left","-170px"); 
    }else{ 
        $(".nav").css("margin-left",-(160+left)+"px"); 
    } 
}

最后在页面加载完,初始化菜单位置。

$(function(){ 
    navpos(); 
});

若是你对平滑滚动还有疑问,可以参考<a href='https://jy.tp.yuanmeng.life/js/22.html' target='_blank'>jQuery平滑滚动到页面指定位置</a>

相关内容推荐
资源求助发帖
查看更多发帖

*

回帖描述:

*

链接类型:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
热点内容推荐
标题:jQuery仿天猫左侧导航滚动效果

*

描述:
平均回复时间:3-10分钟
规则介绍:悬赏寻求论坛网友分享资源,站点对分享内容的准确性,合法性,版权等没有足够的监管能力。如果您发现资源不正确,无法使用,不符合法律法律等情况,您可以直接举报资源。站长将尽快核实您的举报,并根据情况,采取封号,退换米粒等处理。

*

回帖描述:

*

链接类型:

*

阅读权限:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
  • 背景波浪
  • 背景波浪
  • 波浪
  • 波浪
客服
在线咨询
周一 至 周日 9:00 ~ 22:00
QQ:1326974360
微信:juyoubuluo6688
客服热线
18205485173
工作日 9:00 ~ 18:00
微信扫码咨询
客户服务
欢迎咨询服务
咨询量较多时,请耐心等待
社群

关注公众号

获取更多资讯

扫码进群(QQ)

与更多大牛交流沟通

0.223571s