楼梯效果

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
            #LoutiNav{
                
                position: fixed;
                top: 25%;
                left: 40px;
                30px;
                border: 1px solid ;
            }
            #LoutiNav ul li{
                position:relative;
                30px;
                height:30px;
                list-style:none;
                text-align:center;
                line-height: 30px;
                font-size: 12px;
                cursor: pointer;
                border-bottom: 1px dotted #AAAAAA;
            }
            #LoutiNav ul li.last {
                background: darkred;
                color: white;
                border-bottom: none;
            }
            #LoutiNav ul li span{
                display: none;
                30px;
                height: 30px;
                position: absolute; 
                top: 0;
                left: 0;
                color:red;
            }
            #LoutiNav ul li:hover span{
                display: block;
                background: darkred;
                color: white;
            }
            #LoutiNav ul li span.active {
                display: block;
                background: white;
                color: red;
            }
            #LoutiNav ul li:hover span.active{
                display: block;
                background: darkred;
                color: white;
            }
            #header,#main,#footer {
                margin: auto;
                 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: darkcyan;
            }
            #footer{
                height: 500px;
                background: darkcyan;
            }
    
        </style>
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
    </head>

    <body>
        <div id="LoutiNav">
            <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: #cc0033;">服饰</div>
            <div class="Louti" style="background: #999933;">美妆</div>
            <div class="Louti" style="background: #ccff33;">手机</div>
            <div class="Louti" style="background: #006633;">家电</div>
            <div class="Louti" style="background: #6666cc;">数码</div>
            <div class="Louti" style="background: #ff6600;">运动</div>
            <div class="Louti" style="background: #ffcc00;">居家</div>
            <div class="Louti" style="background: #3333ff;">母婴</div>
            <div class="Louti" style="background: #ff00cc;">食品</div>
            <div class="Louti" style="background: #669900;">图书</div>
            <div class="Louti" style="background: #ff66cc;">服务</div>
        </div>
        <div id="footer">尾部</div>
        <!--楼层内容结束-->

    </body>
</html>
<script type="text/javascript">
    /*
     思路:
        1、点击左侧楼层号,对应的楼层字体红色
                     改变 对应的楼层位置 (滚动条滚走的距离)
        2、点击top按钮,回到顶部
        
        3、触发滚动条,根据滚动条滚走的距离 设置楼层号的样式
            关键判断: 当前哪一个楼层在可视区的高度超出了 h/2
    */
    
    var $list = $("#LoutiNav li:not(.last)");
    var $floor = $(".Louti");
    var flag = true;
    $list.click(function(){
        flag = false;
        $(this).find("span").addClass("active").end().siblings().find("span").removeClass();
        var index = $(this).index();
        var t= $floor.eq(index).offset().top;
        $("body,html").animate({"scrollTop" : t},1000,function(){
            flag = true;
        });
    })
    $(".last").click(function(){
        flag = false;
        $list.find("span").removeClass("active");
        $("body,html").animate({"scrollTop" : 0},1000,function(){
            flag = true;
        });
    })
    
    $(window).scroll(function(){
        if( flag ){
            var sTop = $(document).scrollTop();
            $f=$floor.filter(function( index ){
                return Math.abs($(this).offset().top - sTop) < $(this).height()/2;
            })
            var index = $f.index();
            if( index != -1 ){
            
                $list.eq(index).find("span")
                                     .addClass("active")
                                     .end()
                                     .siblings()
                                     .find("span")
                                     .removeClass("active");
        
            }
            if( sTop < 100 ){
                $list.find("span").removeClass("active");
            }
        }
    })
</script>
 

















原文地址:https://www.cnblogs.com/tis100204/p/10328955.html