• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
爱喝牛奶的大娃娃
博客园    首页    新随笔    联系   管理    订阅  订阅
jq 导航跟随 模拟京东手机端

想做一个导航跟随,但是代码都要下载,自己简单些了一个,css都放html里面了,所以也不用下载直接新建html,然后粘贴,点开就是导航跟随效果

效果如图

<!DOCTYPE html>
<html>
  <head>
    <title>导航跟随</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <script src="http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script>
  </head>
 <style>
        #nav {
            display: -webkit-box;
            display: -ms-flexbox;
            display: -webkit-flex;
            display: flex;
            line-height: 30px;
            font-size: 14px;
            width: 100%;
            position: fixed;
            top: 0px;
            left: 0px;
            z-index: 100;
            border-bottom: 1px solid #e5e5e5;
            border-top: 1px solid #e5e5e5;
            min-height: 44px;
            background: #000;
        }

            #nav a {
                display: block;
                position: relative;
                width: 25%;
                line-height: 44px;
                text-align: center;
               
                color: #fff;
            }

                #nav a.active {
                    color: #fff;
 background: red;
                }

        #main {
            padding-top: 44px;
        }
</style>
 <script>
        $(window).load(function () {
            $('html, body').animate({ scrollTop: 0 }, 200);
            var nav = $("#nav");
            var mainPage = $(".mainPage");
            var mainTopArr = new Array();
            for (var i = 0; i < mainPage.length; i++) {
                var top = mainPage.eq(i).offset().top;
                mainTopArr.push(top);
            }
            $(window).scroll(function () {
                var scrollTop = $(this).scrollTop();
               
                var k;
                for (var i = 0; i < mainTopArr.length; i++) {
                    if (scrollTop + 144 >= mainTopArr[i]) {
                        k = i;
                    }
                }
                nav.find("a").eq(k).addClass("active").siblings().removeClass("active");
            });
            nav.find("a[href^='#']").click(function (e) {
                e.preventDefault();
                $('html, body').animate({ scrollTop: $(this.hash).offset().top - 144 }, 200);
            });
        });
    </script>
  <body>
    <div id="nav">
      <a href="#imgdetails" class="active">商品</a>
          <a href="#specifications">规格</a>
          <a href="#reviews">评价</a>
          <a href="#description">详情</a>
    </div>
 <div id="main">
        <div class="mainPage" id="imgdetails"style="height:500px">我是第一块的内容</div>
    <div class="mainPage" id="specifications" style="height:500px">我是第二块的内容</div>
    <div class="mainPage" id="reviews" style="height:500px">我是所有评论啦,来看评论</div>
    <div class="mainPage" id="description" style="height:500px">我是介绍,来看介绍</div>
  </body>
</html>

 

本来是想用document.ready,但是应用到实际中有页面包含了很多绝对定位的元素,定位并不准确。

 

posted on 2018-07-22 22:26  爱喝牛奶的大娃娃  阅读(308)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3