`
amuropikin
  • 浏览: 41559 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用jquery写一个热键(J/K)动态滚动浏览插件

阅读更多
加班之余很无聊,几分钟足够写个彩蛋夹在里面自娱自乐。。。

实现的效果很简单,用j/k键自动翻滚上一条/下一条动态信息,和twitter、微博、g+等等一样,乃懒人IB利器。

主要解决的问题就是判断当前显示在第几条之上,如此获得动态列表中一条的索引位置,从而得到之前或之后对应的scrollTop值。为此需要遍历当前动态列表的每个元素,对其和当前的窗口scrollTop值作对比,把刚好不大于该值的那条索引作为参考物来进行之后的计算。

基本的代码如下:

                var eventNS='keydown.timelineHotkeys'; 
                $(document).unbind(eventNS).bind(eventNS,function(e){
                    //wrapobj为动态列表外的包裹对象 
                    var wrapobj=$('.timeline-feeds:visible').eq(0); 
                    if(wrapobj.length>0){ 
                        var code = e.keyCode; 
                        //feedItemList为每个动态列表对象
                        var feedItemList=wrapobj.find('.item'); 
                        if(code===74||code===75){     
                            var scrollTop=$(window).scrollTop(); 
                            //这里的60像素是页面顶部到第一条动态之间的间隔距离
                            var feed2TopPx=60;                            
                            scrollTop+=feed2TopPx; 
                            var curViewIndex=-1; 
                            var curOfst=0; 
                            feedItemList.each(function(i){ 
                                var ofst=$(this).offset().top; 
                                if(ofst<scrollTop){ 
                                    curViewIndex=i; 
                                    curOfst=ofst; 
                                } 
                            }); 
                            if(code === 74) { // 按下j键时的处理(down) 
                                curViewIndex+=2; 
                                curOfst=feedItemList.eq(curViewIndex).offset().top-feed2TopPx; 
                            }else{  // 按下k键时的处理 (up)   
                                if(curViewIndex!=-1){ 
                                    curViewIndex=curViewIndex>0?curViewIndex:0; 
                                    curOfst=feedItemList.eq(curViewIndex).offset().top-feed2TopPx; 
                                } 
                            }   
                            $('body,html').animate({ scrollTop: curOfst}, 100); 
                        }                      
                    }else{ 
                        $(this).unbind(eventNS); 
                    } 
                });   

分享到:
评论

相关推荐

    jquery多款滚动条插件插件

    例如,如果你需要一个在左右两侧都有滚动条的设计,可以考虑使用Perfect Scrollbar或Malihu Custom Scrollbar。而如果目标用户主要是移动设备用户,那么性能优异的iScroll可能是更好的选择。 在使用这些插件时,...

    jQuery滚动插件

    在给出的博客链接(https://etion-lee.iteye.com/blog/1434858)中,作者分享了一个具体的jQuery滚动插件的使用示例和源码,读者可以通过阅读文章来深入了解如何实现滚动效果,以及在实际项目中的应用技巧。...

    jquery 滚动广告插件

    jQuery 滚动广告插件是一种广泛应用于网页开发中的技术,它可以帮助开发者创建吸引人的、动态的广告展示效果。在网页设计中,滚动广告能够吸引用户的注意力,提高广告的可见性和点击率。以下是对这个主题的详细阐述...

    jquery上下滚动插件

    **jQuery**是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画效果和Ajax交互等任务。jQuery上下滚动插件就是利用这个库来实现复杂的滚动动画,使得开发者无需从头编写复杂的JavaScript代码,就能实现流畅...

    给力的jquery滚动条插件

    标题中的“给力的jquery滚动条插件”指的是一个基于jQuery库的滚动条增强插件,这类插件通常用于替换浏览器默认的滚动条样式,提供更美观、可自定义的滚动交互体验。在网页设计中,滚动条是用户浏览长内容时不可或缺...

    jQuery横向和纵向内容滚动插件Sly

    **jQuery横向和纵向内容滚动插件Sly** 在网页设计中,内容滚动是一种常见的交互方式,它可以提升用户体验,尤其在处理大量信息时。jQuery作为一款强大的JavaScript库,提供了丰富的插件来实现各种滚动效果。其中,...

    jQuery全屏滚动插件

    jQuery全屏滚动插件,通常被称为Parallax Scrolling或Full Page Scrolling,是网页设计中一种流行的视觉效果,它允许用户通过滚动鼠标或触摸屏幕来浏览全屏的、逐层展开的内容。这种技术能创造出深度感和动态交互...

    jquery滚动条美化插件

    "jQuery滚动条美化插件"就是这样一个工具,它能够帮助开发者轻松地将原本单调的默认滚动条转变为具有个性化风格的美观组件。 ### 插件介绍 jQuery.nicescroll是一款广泛使用的JavaScript插件,专门用于美化网页中...

    jquery垂直滚动条插件(teoyallScroll)

    总结来说,teoyallScroll 是一个易于使用且高度可定制的jQuery垂直滚动条插件,它可以帮助开发者摆脱浏览器默认滚动条的限制,提供更加优雅的用户体验。通过合理的配置和事件处理,teoyallScroll 可以成为提升网页...

    jquery自定义滚动条插件

    **jQuery自定义滚动条插件**是一种用于增强网页滚动体验的工具,尤其在现代Web设计中,为了提供更美观和个性化的界面,自定义滚动条变得越来越重要。本插件适用于IE8及以上的浏览器,允许开发者对滚动条的外观和行为...

    jquery循环滚动插件

    本篇文章将详细介绍jQuery循环滚动插件的原理、应用场景以及如何使用。 **1. 插件原理** jQuery循环滚动插件基于jQuery核心库,利用定时器(如`setInterval`)和DOM操作来实现元素的自动滚动效果。通常,它会改变...

    jQuery数字滚动增加插件.zip

    《jQuery数字滚动增加插件深度解析》 在Web开发领域,动态效果的运用极大地提升了用户体验。其中,数字滚动增加效果尤为常见,它常用于显示实时更新的数据,如股票价格、计数器等。今天我们将深入探讨一款基于...

    jQuery产品选择轮播图左右滚动特效插件

    "jQuery产品选择轮播图左右滚动特效插件"正是这样一个工具,它利用jQuery的功能,为网站的商品展示提供了一种吸引用户注意力的方式。 轮播图,又称为滑动门或旋转木马,是一种常见的网页元素,用于在有限的空间内...

    jQuery滚动菜单插件Section Menu

    jQuery Section Menu是一款实用的JavaScript插件,它专为网页设计者和开发者提供了一种高效的方式,来创建一个侧边栏的菜单,该菜单可以随着用户滚动页面而更新,指向页面上的各个不同部分。这款插件特别适合于长...

    jQuery插件创建一个容器元素的垂直滚动面板

    本主题聚焦于利用jQuery创建一个垂直滚动面板插件,这是一个常见的需求,特别是在网页设计中,用于展示大量数据或者长篇内容时,提供流畅且用户友好的滚动体验。 首先,理解基本的jQuery插件结构至关重要。一个简单...

    jquery.mCustomScrollbar自定义滚动条插件

    jQuery.mCustomScrollbar插件为开发者提供了强大的工具,让滚动条不再只是网页中的一个小配件,而是成为提升网站品质和用户体验的重要一环。无论是在响应式布局、移动设备,还是在各种复杂场景下,都能发挥出其强大...

    jQuery的单页面滚动插件

    **jQuery的单页面滚动插件**是Web开发中一种常用的技术,它允许用户在单一页面内通过滚动浏览多个“分页”内容,提供流畅且直观的用户体验。这种插件通常结合了JavaScript库jQuery,利用其强大的DOM操作和事件处理...

    jQuery单页全屏滚动插件.zip

    在本案例中,"jQuery单页全屏滚动插件.zip" 提供了一个可自定义样式的解决方案,帮助开发者轻松实现这种效果。下面我们将深入探讨相关知识点。 首先,jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、...

    JQuery滚动广告插件

    **jQuery滚动广告插件**是一种基于JavaScript库jQuery的动态展示广告的工具,它使得网站能够创建各种富有吸引力的滚动效果,提升用户体验并增加广告的可见性。jQuery因其简洁的API和丰富的插件生态,被广泛应用于...

Global site tag (gtag.js) - Google Analytics