JavaScript目录菜单滚动反显组件,有以下两个特点

  1. 每个导航菜单项(nav)对应页面一个内容区域(content)
  2. 滚动页面到特定内容区域(content)时,对应的菜单会自动切换,一般会添加一个高亮样式

这个功能可以很方便的提醒用户目前所浏览的位置,有时目录菜单还会设计为滚动时一直固定在指定位置

以下为此类功能的应用示例:

1. 京东团购首页左侧导航菜单

2. 京东图书详细页右侧图书目录导航

3. 京东团购品牌惠楼层分类菜单

实现思路:

吸顶灯类似,也是滚动在特定内容的时候去对特定的元素做样式处理。不同的是这里的每一个菜单项一一对应相应的内容区域。

  1. 给菜单和内容区域加特定的属性(data-xx),关联起对应关系
  2. 记录所有内容(content)的位置信息(注意,需要在页面load后)
  3. 给window添加scroll事件,当滚动到指定内容时高亮显示对应的菜单项(因为是一一对应的,通过索引就可以找到对应菜单项)

如果使用了jQuery,通过插件方式实现不过50行代码

/*
* 导航/菜单高亮组件
* option
* nav 导航/菜单选择器
* content 内容模块选择器
* diffTop 距离顶部的误差值
* diffBottom 距离底部的误差值
* lightCls 高亮的class
*
*/
$.fn.navLight = function(option, callback) {
option = option || {}
var nav = option.nav || '[data-widget=nav]'
var content = option.content || '[data-widget=content]'
var diffTop = option.diffTop || 200
var diffBottom = option.diffBottom || 500
var lightCls = option.lightCls || 'curr' var $self = $(this)
var $nav = $self.find(nav)
var $content = $self.find(content) // 记录每个分类的位置
var contentPosi = $content.map(function(idx, elem) {
var $cont = $(elem)
var top = $cont.offset().top
var height = $cont.height()
return {
top: top-diffTop,
bottom: top+diffBottom,
jq: $cont
}
}) var $win = $(window)
var $doc = $(document) var handler = $.throttle(function(e) {
var dTop = $doc.scrollTop()
highLight(dTop)
}, 100) function highLight(docTop) {
contentPosi.each(function(idx, posi) {
if (posi.top < docTop && posi.bottom > docTop) {
$nav.removeClass(lightCls)
$nav.eq(idx).addClass(lightCls)
if (callback) {
callback($nav, $content)
}
}
})
} $win.scroll(handler)
};

  

线上示例

JavaScript目录菜单滚动反显组件的实现的更多相关文章

  1. select下拉菜单反显不可改动,且submit能够提交数据

    首先通过后台funcA()将下拉菜单反显不可改动的数据response到disable.jsp页面,disable.jsp: <script> var data1=${result.obj ...

  2. js 反显查询。

    反显就是点击查询之后,查询条件消失,正常解决很容易,就是查询的表单value等于返回过来的值 ,比如这样,初始化时候的devNumber是空的,点击查询的时候会有值,我们在返回来显示就可以了. < ...

  3. iOS关于菜单滚动视图实现

    菜单滚动视图也是在项目开发过程中比较常用到的功能,先直接看效果图 实现的效果如下: 当菜单个数的总长度超过一个屏宽度就计算每一个的文字宽度,若没有则只进行一个屏平分,点击菜单项时,滚动的视图位置会随着 ...

  4. MVC 多级目录菜单

    MVC多级目录菜单  ----- 简单模拟 Model ---- cs { public class Class1 { public int ID{get;set;} public int paren ...

  5. iOS菜单滚动联动内容区域功能实现

    平时开发APP中关于此功能还是比较经常碰到,本实例借用三个开源的插件,并对其中一个进行修改调整实现出想要的效果:本文重点介绍修改的内容跟三个插件的运用,这三个插件还可以各自扩展到其它项目的运用: 效果 ...

  6. 第一百四十八节,封装库--JavaScript,菜单切换

    第一百四十八节,封装库--JavaScript,菜单切换 首先在封装库封装点击切换方法 /** dian_ji_qie_huan()方法,设置点击切换,将元素设置成点击切换,也就是点击目标元素后,循环 ...

  7. Delphi TScrollBar 用于滚动窗口、组件内容

    滚动条组件(TScrollBar)此组件是一个Windows滚动条,用于滚动窗口.组件内容.许多控制有滚动条属性,它们把滚动条作为自己的一部分,对于没有完整滚动条的控制,TScrollBar组件提供了 ...

  8. ReactNative: 使用滚动视图ScrollView组件

    一.简介 当页面内容的非常多时,即使换行后仍然无法充分显示,此时最好的解决办法就是让页面可以滚动显示.在React-Native中,提供了可供滚动的视图组件ScrollView组件.它的属性和方法以及 ...

  9. JavaScript实现页面滚动到div区域div以动画方式出现

    用JavaScript实现页面滚动效果,以及用wow.js二种方式实现网页滚动效果 要实现效果是页面滚动到一块区域,该区域以动画方式出现. 这个效果需要二点: 一:我们要先写好一个css动画. 二:用 ...

随机推荐

  1. HDU 5703 Desert 水题 找规律

    已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

  2. 高效 Java Web 应用开发框架 JessMA v3.2.2 正式发布

    JessMA(原名:Portal-Basic)是由 JessMA Open Source 开发的一套高效 Java Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 ...

  3. angular学习的一些小笔记(中)之ng-disabled轻松实现按钮是否可点击状态

    哇,这个可以轻松实现输入值就按钮可点击,输入框没有值则不可点击的状态呀 看代码 <!doctype html> <html ng-app=""> <h ...

  4. Plyr – 简单,灵活的 HTML5 媒体播放器

    Plyr 是一个简单的 HTML5 媒体播放器,包含自定义的控制选项和 WebVTT 字幕.它是只支持现代浏览器,轻量,方便和可定制的媒体播放器.还有的标题和屏幕阅读器的全面支持. 在线演示      ...

  5. 【HTML】字符(Glyphs)收集

    Special Characters " " " quotation mark u+0022 ISOnum p:before { content:"\0022& ...

  6. Atitit jOrgChart的使用  组织架构图css html

    Atitit jOrgChart的使用  组织架构图css html 1. 项目要做组织架构图,要把它做成自上而下的树形结构,于是决定1 2. Html导入 以来的css js1 2.1. 数据来源 ...

  7. UIApplicationDelegate

    App受到干扰时,UIApplication会通知它的delegate对象,让delegate处理系统事件. 项目中的AppDelegate已经遵守了UIApplicationDelegate协议   ...

  8. Xcode插件

    Xcode插件-2016-03-10Xcode插件管理神器 —— Alcatraz 说明 Alcatraz是一个管理Xcode开源包的,你可以用它查找安装你想要的插件,模板以及配色方案,而你无需手动克 ...

  9. unity安卓和IOS读写目录

    StreamingAssets文件夹下的只读不可写路径: 安卓读:filePath = Application.streamingAssetsPath + "/文件名.格式名"; ...

  10. iOS-UIScrollView和UIPageControl的综合实力,滚动图,轮播图

    本代码主要实现图片之间的切换 目录结构 代码 ViewController.m文件 #import "ViewController.h" @interface ViewContro ...