jq实现京东楼层导航

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>jquery实现仿京东楼梯效果-jq22.com</title>
<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
<style>
* {
    margin:0;
    padding:0;
}
#menu {
    position:fixed;
    top:25%;
    left:40px;
    width:30px;
    border:1px solid;
}
#menu ul li {
    position:relative;
    width:30px;
    height:30px;
    list-style:none;
    text-align:center;
    line-height:30px;
    font-size:12px;
    cursor:pointer;
    border-bottom:1px dotted #AAAAAA;
}
#menu ul li.last {
    background:#ccc;
    color:black;
    border-bottom:none;
}
#menu ul li span {
    display:none;
    width:30px;
    height:30px;
    position:absolute;
    top:0;
    left:0;
    color:red;
}
#menu ul li:hover span {
    display:block;
    background:darkred;
    color:white;
}
#menu ul li span.active {
    display:block;
    background:darkred;
    color:white;
}
#menu ul li:hover span.active {
    display:block;
    background:darkred;
    color:white;
}
#header,#main,#footer {
    margin:auto;
    width:1000px;
    text-align:center;
    font-size:40px;
    font-weight:bold;
    line-height:500px;
}
#main div {
    height:700px;
    font-size:50px;
    color:honeydew;
    line-height:700px;
}
#header {
    height:500px;
    background:#ccc;
}
#footer {
    height:500px;
    background:#ccc;
}
</style>
</head>
<body>
<div id="menu">
    <ul>
        <li>1F <span>服饰</span> </li>
        <li>2F <span>美妆</span> </li>
        <li>3F <span>手机</span> </li>
        <li>4F <span>家电</span> </li>
        <li>5F <span>数码</span> </li>
        <li>6F <span>运动</span> </li>
        <li>7F <span>居家</span> </li>
        <li>8F <span>母婴</span> </li>
        <li>9F <span>食品</span> </li>
        <li>10F <span>图书</span> </li>
        <li>11F <span>服务</span> </li>
        <li class="last">Top</li>
    </ul>
</div>

<!--楼层内容开始-->
<div id="header">头部</div>
<div id="main">
    <div class="Louti" style="background: #FF0000;">服饰</div>
    <div class="Louti" style="background: #FF7F00;">美妆</div>
    <div class="Louti" style="background: #FFFF00;">手机</div>
    <div class="Louti" style="background: #00FF00;">家电</div>
    <div class="Louti" style="background: #00FFFF;">数码</div>
    <div class="Louti" style="background: #0000FF;">运动</div>
    <div class="Louti" style="background: #8B00FF;">居家</div>
    <div class="Louti" style="background: aquamarine;">母婴</div>
    <div class="Louti" style="background: pink;">食品</div>
    <div class="Louti" style="background: bisque;">图书</div>
    <div class="Louti" style="background: lightgoldenrodyellow;">服务</div>
</div>
<div id="footer">尾部</div>
<!--楼层内容结束--><script>
var flag = true; //控制 当点击楼层号时,禁止滚动条的代码执行   值为true时,可以执行滚动条代码
//  根据楼层号 控制滚走的距离  
// 1、除了top的楼梯号,为每一个楼梯号添加一个click,控制楼梯滚走的距离(距离:当前楼层的offset().top )
$("#menu li:not(:last)").click(function() {
    flag = false;
    //当前点击的楼号红色的 其余黑色的
    $(this).find("span")
        .addClass("active")
        .end()
        .siblings()
        .find("span")
        .removeClass("active");
    //获取当前楼号对应楼层的 top值
    var sTop = $(".Louti").eq($(this).index()).offset().top;

    //将页面滚走的距离设置为  sTop  
    $("body,html").animate({
        "scrollTop": sTop
    }, 1000, function() {
        flag = true;
    });
})
//2、点击top   回到顶部
$("#menu li:last").click(function() {
    $("body,html").animate({
        "scrollTop": 0
    }, 1000);
    $("#menu li span").removeClass("active");
})

//3、 滚动条滚动 --  找到当前楼层的索引    控制楼层号
$(window).scroll(function() {
    //如果flag  为true   可以执行滚动条的代码
    if (flag) {

        //获取页面滚走的距离
        var sTop = $(document).scrollTop();
        //filter  返回满足条件的那个对象 
        //找到满足某个条件的楼层对象    
        var $floor = $(".Louti").filter(function(index, ele) {
            return Math.abs($(this).offset().top - sTop) < $(this).height() / 2;
        })

        //根据楼层的索引 设置楼梯号的 样式
        $("#menu li").eq($floor.index())
            .find("span")
            .addClass("active")
            .end()
            .siblings()
            .find("span")
            .removeClass("active");
    }
})


//        方法二:

//        $(document).scroll(function() {
//            if($(document).scrollTop() >= 500) {
//                $("#menu").fadeIn(500);
//                var i = Math.floor(($(document).scrollTop() - 500) / 700);
//                $("ul li").eq(i).children("span").addClass("active");
//                $("ul li").eq(i).siblings().children("span").removeClass("active")
//            }else{
//                $("#menu").fadeOut(333);
//            }
//        })
//        
//        
//        $("ul li").not(".last").click(function() {
//            $("body,html").animate({ "scrollTop": $(this).index() * 700 + 500 }, 666)
//        })
//        
//        $(".last").click(function(){
//            $("body").animate({ "scrollTop":0 },500);
//        })</script>
</body>
</html>
 

转载于:https://my.oschina.net/u/3011120/blog/869901

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值