http://www.cnblogs.com/snandy/p/4013137.html
JavaScript目录菜单滚动反显组件,有以下两个特点
- 每个导航菜单项(nav)对应页面一个内容区域(content)
- 滚动页面到特定内容区域(content)时,对应的菜单会自动切换,一般会添加一个高亮样式
这个功能可以很方便的提醒用户目前所浏览的位置,有时目录菜单还会设计为滚动时一直固定在指定位置。
以下为此类功能的应用示例:
1. 京东团购首页左侧导航菜单
2. 京东图书详细页右侧图书目录导航
3. 京东团购品牌惠楼层分类菜单
实现思路:
和吸顶灯类似,也是滚动在特定内容的时候去对特定的元素做样式处理。不同的是这里的每一个菜单项一一对应相应的内容区域。
- 给菜单和内容区域加特定的属性(data-xx),关联起对应关系
- 记录所有内容(content)的位置信息(注意,需要在页面load后)
- 给window添加scroll事件,当滚动到指定内容时高亮显示对应的菜单项(因为是一一对应的,通过索引就可以找到对应菜单项)
如果使用了jQuery,通过插件方式实现不过50行代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/* * 导航/菜单高亮组件
* 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)
}; |
相关推荐
3. 前端框架实现:现代前端框架提供了丰富的组件库和指令系统,如React的`react-slick`,Vue的`vue-slick-carousel`,这些库封装了滚动逻辑,开发者只需简单配置即可创建滚动菜单。 二、滚动菜单的应用场景 滚动...
【描述】:虽然描述部分为空,但我们可以推测“菜单滚动”可能涉及到如何通过编程实现动态滚动效果,以及可能与前端开发中的JavaScript、CSS或者HTML5相关。在实际应用中,菜单滚动可以通过监听用户的滚动事件,动态...
为了实现页面滚动时导航栏的隐藏和显示,我们需要使用Bootstrap的JavaScript插件,这部分代码通常位于`js`目录下的文件中。在Bootstrap 3中,这个功能可以通过添加`data-spy="affix"`属性到导航栏元素来实现。当页面...
8. 库和框架:有许多现成的JavaScript库和框架,如jQuery UI、Bootstrap、Materialize等,提供预设的下拉菜单组件,简化了开发工作,但同时也需要了解如何集成和定制这些组件。 总之,掌握JavaScript下拉菜单的实现...
"基于Vue的可滑动菜单栏"是一个专为移动端设计的组件,利用Vue.js框架的强大功能,实现了一个高效、流畅且易于定制的滑动菜单栏。Vue.js是一个轻量级的前端JavaScript框架,以其组件化、易学习和高可维护性受到...
这个项目通过CSS来布局和设计扇形导航的静态部分,然后利用JavaScript实现动画效果,使导航菜单在用户的操作下优雅地展开和收起。 首先,我们来看看CSS在这其中的作用。CSS(层叠样式表)主要负责网页元素的样式和...
JavaScript树型菜单dtree是一种常见的前端交互元素,用于在网页中展示层次结构的数据,比如目录、组织架构或者分类。在Web开发中,它为用户提供了一种直观、易于导航的方式来探索和操作多级数据。以下是对这个主题的...
总结来说,微信小程序中实现滑动页面隐藏和显示组件功能的关键在于,准确地监听页面滚动事件,根据滚动距离控制组件的显示状态,并通过CSS过渡动画使显示和隐藏过程更为平滑自然。这种交互方式对于改善用户体验,...
本文将详细讲解如何使用JavaScript实现这样的功能,主要基于标题和描述中的内容,结合实际应用场景来深入探讨。 一、省市数据存储 在JavaScript中,我们可以使用二维数组来存储省市区级的数据结构。例如: ```...
要实现菜单滚动监听,通常我们会使用JavaScript或者框架如React、Vue、Angular等提供的API。对于原生JavaScript,我们可以监听`window.onscroll`事件: ```javascript window.addEventListener('scroll', function...
例如,`<scroll-view>`是微信小程序中用于实现滚动效果的基础组件。 3. **数据绑定**:在WXML和WXSS中,通过数据绑定将JavaScript中的数据与视图层进行关联。在分类菜单中,商品类别列表可以通过这种方式动态加载和...
JavaScript可以监听滚动事件,结合CSS3动画实现平滑滚动效果。 11. **全屏背景视频** 全屏背景视频可增强网站视觉冲击力。JavaScript可以控制视频播放、暂停、音量等功能,同时确保在移动设备上节省资源。 12. **...
SVG(Scalable Vector ...总之,SVG实现的炫酷滚动菜单通过结合SVG图形、轨迹跟随技术和模块化组件,提供了一种吸引用户的交互方式。理解这些知识点,并掌握其实现方法,对于提升网页或应用的用户体验具有重要意义。
实现侧边滑动菜单的关键在于理解QML中的Item、Rectangle、Column、Row、StackView等组件以及它们的交互。例如,我们可以使用Rectangle来创建一个菜单项,用Column或Row来组织菜单的布局,而StackView则可以帮助我们...
首先,滚动下拉菜单的基本结构通常由HTML和CSS构建,同时可能涉及到JavaScript或jQuery来实现动态效果。HTML用于创建菜单的基本结构,如`<ul>`和`<li>`元素,它们分别代表无序列表和列表项。CSS则用于定义样式,包括...
例如,假设我们有 `menuScroll` 和 `contentScroll` 两个 Better-Scroll 实例,当菜单滚动时,我们可以更新内容列表的滚动位置: ```javascript <!-- 菜单列表 --> <!-- 内容列表 --> import BScroll...
在给定的“JS实现鼠标滚动自动隐藏顶部导航菜单特效源码.zip”压缩包中,包含了一个用JavaScript编写的代码示例,该示例演示了如何在用户滚动页面时动态显示或隐藏顶部导航菜单。这种效果常见于许多现代网站设计中,...
在“javascript几个网页特效”这个主题中,我们可以深入探讨JavaScript实现的一些常见和有趣的网页特效。 1. **动画效果**:JavaScript可以创建各种动画,如淡入淡出、滑动、旋转等。例如,使用CSS3的transition和...
总的来说,理解 JavaScript 下拉菜单的原理和实现方法对于前端开发者来说非常重要,因为它们是网页交互设计的基础组件之一。通过熟练掌握这一技术,可以提升网页的用户体验,并为用户提供更直观、更丰富的导航方式。
5. **库与框架的支持**:许多前端库如jQuery、Vue.js、React等提供了构建树形菜单的插件或组件,使得实现更加简单,功能更加强大。例如,jQuery有jQuery UI的Treeview,React有react-treeview等。 6. **性能优化**...