<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<style>
    /*菜单容器样式,设置水平垂直居中,方便点击*/

    .menu {
        position: fixed;
        width: 200px;
        height: 200px;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }

    /*菜单样式*/

    [href] {
        display: inline-block;
        width: 40px;
    }

    /*内容的样式*/

    [name] {
        display: block;
        width: 300px;
        height: 400px;
        border-top: 5px solid salmon;
    }

    /*菜单高亮的样式*/

    .active {
        font-size: 32px;
        background-color: chartreuse;
    }
</style>

<body>
    <!--内容容器-->
    <div class="content"></div>
    <!--菜单容器-->
    <div class="menu"></div>
</body>

</html>
<script>
    //初始化选择器,将获取到的element数组转化为数组对象
    function $(selector) {
        return Array.prototype.slice.call(document.querySelectorAll(selector)) //支持css3的选择器
    }

    //创建内容和菜单的DOM
    function createDom(attr) {
        var html = '';
        var temp = attr == 'href' ? '#' : '';
        for (var i = 1; i < 10; i++) {
            html += '<a ' + attr + '="' + (temp + i) + '">' + i + '</a>';
        }
        return html;
    }
    $('.content')[0].innerHTML = createDom('name')
    $('.menu')[0].innerHTML = createDom('href')
    //获取内容的偏移量(相对于浏览器顶部)
    var nameOffsets = $('[name]').map(function (v) {
        return v.offsetTop
    });

    // 
    var timer;
    window.onscroll = function (e) {
        if(timer){
          clearTimeout(timer)
        }  
        timer = setTimeout(function(){
          addLiScroll();
          timer = undefined;
        },200)
    }

    //滚动防抖
    function addLiScroll(){
      //获取当前页面相对于浏览器顶部的偏移量
      var pageOffset = window.pageYOffset;
      var abs = Math.abs; //获取绝对值函数
      //查找离当前浏览器顶部的偏移量最近的菜单锚点.
      var nearHash = nameOffsets.reduce(function (a, b) {
          return abs(a - pageOffset) > abs(b - pageOffset) ? b : a;
      })
      //获取菜单锚点
      var index = nameOffsets.indexOf(nearHash);
      //给菜单锚点添加 .active ,移除其他菜单元素的.active
      $('.active').forEach(function (v) {
          v.className = ''
      })
      $('[href]')[index].className = 'active'
    }
</script>

 上面只是一个better-scroll基本的功能;

 

 git上是我仿饿了么实现购物的一些基本功能,也是下载即用 https://github.com/a653398363/moblieShopping