模仿京东楼层跳转效果,附注释

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript" src="js/jquery-3.1.1.min.js" ></script>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        .main{
            width: 700px;
            border: 1px solid red;
            margin: 0 auto;
        }
        .main .floor{
            height: 400px;
            font-size: 60px;
            color: white;
            text-align: center;
            line-height: 400px;
        }
        .red{
            background: red;
        }
        .blue{
            background: blue;
        }
        .green{
            background: green;
        }
        .purple{
            background: purple;
        }
        .pink{
            background: pink;
        }
        .yellow{
            background: yellow;
        }
        .floorMenu{
            list-style: none;
            width: 40px;
            border: 1px solid black;
            border-bottom: none;
            position: fixed;
            top: 40px;
            left: 40px;
        }
        .floorMenu li{
            width: 40px;
            height:40px;
            line-height: 40px;
            border-bottom: 1px solid black;
            text-align: center;
        }
        .floorMenu li.active{
            background: black;
            color: white;
        }
    </style>
</head>
<body>
    <div class="main">
        <ul class="floorMenu">
            <li class="active">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
        </ul>
        <div class="floor red">1</div>
        <div class="floor blue">2</div>
        <div class="floor green">3</div>
        <div class="floor purple">4</div>
        <div class="floor pink">5</div>
        <div class="floor yellow">6</div>
    </div>
</body>

<script type="text/javascript">
    //1. 获得每层楼距离页面顶部的距离,并将它们放入一个数组中。
    var floorArr = [];
    $(".floor").each(function(){
        let everyTop = $(this).offset().top;    //每个div距离页面顶部的距离。
        floorArr.push(everyTop);
    })

    //2. 监听滚动条滚过的距离,根据距离去判断滚到了那一层楼。
        //2.1 绑定滚动事件,并且获得滚动的距离
        //用on来绑定的事件可以使用off取消,因为点击楼层的时候,会有附带的跑马灯效果。方便取消监听。
        $(window).on("scroll",scrollMove)
        function scrollMove(){
            //滚动条滚动的距离
            var scrollTop = $(window).scrollTop()+100;
            var index = 0;
            for(var i=0; i<floorArr.length; i++){
                var now = floorArr[i];    //当前楼层距离顶部的距离
                var next = floorArr[i+1];    //下一楼层距离顶部的距离。
                if(scrollTop>=now && scrollTop<next){
                    index = i;
                }else if(scrollTop>=floorArr[floorArr.length-1]){
                    index = floorArr.length-1;
                }
            }

        //3. 根据楼层索引,去改变楼层导航的样式
            $(".floorMenu li").eq(index).addClass("active").siblings("li").removeClass("active")
        }
        //4. 给楼层导航绑定点击事件。
        $(".floorMenu li").click(function(){
            //取消滚动监听
            $(window).off("scroll");
            $(this).addClass("active").siblings("li").removeClass("active");
            //获得点击li的索引。
            var idx  = $(this).index();
            //根据索引获取楼层顶部距离
            var sTop = floorArr[idx];
            $(document.body).animate({
                scrollTop:sTop
            },500,function(){    //回调函数,因为取消了监听事件,所以在点击完之后,在次调用监听事件。
                $(window).on("scroll",scrollMove)
            })

        })
</script>

</html>

原文地址:https://www.cnblogs.com/baimeishaoxia/p/12219493.html

时间: 2024-11-15 05:54:45

模仿京东楼层跳转效果,附注释的相关文章

模仿京东顶部搜索条效果制作的一个小demo

最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 1 #define kScreenWidth [UIScreen mainScreen].bounds.size.width 2 #define kScreenHeight [UIScreen mainScreen].bounds.size.height 3 4 #import "mainViewController.h" 5 6 @interface mainViewController

微信小程序相关一、模仿京东静态登录页面

一.培训的第一天,基本上没有什么最新的东西,但是看到老师的代码收获的确实是不少. 1.1.首页代码很简洁,将共有的样式都提取的很好. 1.2.其次是每一个小块写样式的时候用到了好多子代选择器和后代选择器,这样看起来css的一个样式就写的很长,但是比之前我们只是单一的写一个样式,大大提高了IO请求,整体css渲染也变快了.因为当渲染css的时候是从右向左的,就是先确定后代,在往上寻找祖辈,直到找到相对应的样式.dom树从叶子节点往上全部扫描一遍,可想而知只写一个单一的样式,效率是多么的低. 1.3

想着模仿京东微信首页呢,banner滚动搞定了,写到了一半了

接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 想着模仿京东首页呢,结果也没赶得及写完,轮播图让我搞了好长时间.也好,那就国庆8天好好的写一下,这里写了一半,先放着.先介绍一下这一半的内容.       还是老规矩,先放个图吧,虽然才一点点了 上线的banner大图和京东头条都是可以滚动的,抄写微信小程序社区官方qq群:390289365里 Nigel''写的. 下面说一下项目 这次我把项目的资源

如何实现点击链接不跳转效果

何实现点击链接不跳转效果:超链接<a>原本作用就是为了实现网页跳转的,但是某些情况下,会希望当点击链接的时候并不产生跳转效果,而是在满足一定条件下再进行跳转.下面就介绍一下实现此效果的方法:为超链接绑定onclick事件处理函数,然后返回false,代码如下: <script type="text/javascript"> window.onload=function(){ var mylink=document.getElementById("myl

jQuery模仿window7窗口弹出效果

原文:jQuery模仿window7窗口弹出效果 源代码下载地址:http://www.zuidaima.com/share/1595935788665856.htm 效果不错,分享下. 出处:http://www.jq-show.com/Detail.aspx?id=197 版权声明:本文为博主原创文章,未经博主允许不得转载.

模仿聊天窗口的分组的效果(粗糙的Demo)

#import "AViewController.h" #define max 8888888888 @interface AViewController ()<UITableViewDelegate,UITableViewDataSource> @property (nonatomic,strong)UITableView *myTabView; @property (nonatomic,strong)NSArray *dataArray; @property (nona

HTML5 实现Link跳线效果

之前我们推出过Flex版本的Link跳线效果,现在基于HTML5新版本的跳线效果也实现了,细微之处我们进行了改进,如link倾斜的时候Offset方向始终保持垂直等.先看效果. 实现的算法和Flex基本一致,在这不做进一步分析了,算法中使用到矩阵的运算,所以在这贴一下矩阵运算的封装. var matrix=function(options){ if (!(this instanceof arguments.callee)) { return new arguments.callee(option

穿墙效果及注释

穿墙效果附加注释,附加鼠标进入方向算法 <!doctype html> <html> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; list-style: none; } ul { overflow: hidden; width: 630px; margin: 100px aut

笠翁对韵(全卷,珍藏版附注释)

笠翁对韵(全卷,珍藏版附注释) 诗歌与悦读 2016-10-21 <笠翁对韵>作者:李渔(1611-1680年),原名仙侣,号天征,后改名渔,字笠翁,一字笠鸿.谪凡,他仿照<声律启蒙>写的旨在作诗的韵书因此叫<笠翁对韵>. 卷一 一 东 天对地,雨对风.大陆对长空.山花对海树,赤日对苍穹.雷隐隐,雾蒙蒙.日下对天中.风高秋月白,雨霁晚霞红.牛女二星河左右,参商两曜斗西东.十月塞边,飒飒寒霜惊戍旅:三冬江上,漫漫朔雪冷渔翁. <左传?昭元年>载,传说高辛氏有二