<!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

原生js 实现better-scroll效果,饿了么菜单内容联动,即粘即用的更多相关文章

  1. 面向对象原生js幻灯片代淡出效果

    面向对象原生js幻灯片代淡出效果 下面是代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  2. 原生JS封装简单动画效果

    原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...

  3. 原生js实现的放大镜效果

    这是我用原生js写的放大镜效果,与各种各样的框架技术相比,我喜欢使用原生的js,在这里,想和大家一起谈谈原生和框架技术的理解与个人喜好. <!DOCTYPE HTML><html&g ...

  4. jq与原生js实现收起展开效果

    jq与原生js实现收起展开效果 (jq需自己加载) <!DOCTYPE html> <html> <head> <meta charset="UTF ...

  5. 原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)

    淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装, 有用得着的朋友, 可以直接使用. 代码中另附有一个设置元素透 ...

  6. 原生JS轮播-各种效果的极简实现(二)面向对象版本的实现和优化

    之前写了一篇原生JS轮播,不过是非面向对象的,并且也没有添加上自动轮播.这里来写一下如何优化和进阶. 这里简单地介绍一下之前的代码,这是html结构 <body> <div clas ...

  7. 原生js实现拖拽效果

    面向对象 + 原生js拖拽 拖拽div等盒子模型,都是日常操作没有什么问题,如果是拖拽图片的话,会有一点小坑要踩...... 那么我们看代码: var Move_fn = {}; (function( ...

  8. 原生JS编写的照片墙效果实例演示特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 原生js实现雪花飘落效果

    雪花飘落的效果实现步骤:1.使用setInterval定时器每800毫秒创建一个雪花:2.把每一个雪花作为参数传进动态下落的方法中即可. <style> *{padding: 0;marg ...

随机推荐

  1. 如何用elasticsearch构架亿级数据采集系统(第1集:非生产环境windows安装篇)

    (一)做啥的? 基于Elasticsearch,可以为实现,大数据量(亿级)的实时统计查询的方案设计,提供底层数据框架. 本小节jacky会在非生产环境下,在 window 系统下,给大家分享着部分的 ...

  2. Complete the Projects

    F1. Complete the Projects (easy version) F2. Complete the Projects (hard version) 参考:Complete the Pr ...

  3. ICEM——倒角的处理

    原视频下载地址: https://pan.baidu.com/s/1miHMOuk 密码: knc4

  4. scala_基础

     笔记前言:本笔记为scala的入门基础和scala基础使用.主要参考为书籍和推荐较高的博客.主要目的为供个人总结学习. 所有来自网络参考内容不一一列出. 一.面向过程 1.变量体 val 标识符:声 ...

  5. 新一代互联网传输协议QUIC

    QUIC(Quick UDP Internet Connections,快速UDP互联网连接)是Google提出的一种基于UDP改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验. Q ...

  6. Hystrix原理与实战(转)

    背景 分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务.如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服 ...

  7. yii2增删改查操作

    https://www.yiichina.com/tutorial/996 https://www.yiichina.com/tutorial/834 一.新增 使用model::save()操作进行 ...

  8. Java基础 import 要在所有的class前面

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  9. Web 性能压力测试工具之 Siege 详解

    Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行.s ...

  10. django 实战3 simpleui

    pip3 install django-import-export pip3 install django-simpleui pip3 install mysqlclient python3 mana ...