`

使用JQ来实现浏览器滚动条

阅读更多
http://www.aa25.cn/content.asp?id=794

<script type="text/javascript" src="jquery-1.1.3.1.js"></script> 
<script type="text/javascript" src="jquery.linscroll.js"></script> 
<script type="text/javascript"> 
$(document).ready( 
function(){ 
$(’#scrollContent’).setScroll( //scrollContent为滚动层的ID 
{img:scroll_bk.gif’,width:10},//背景图及其宽度 
{img:scroll_arrow_up.gif’,height:3},//up image 
{img:scroll_arrow_down.gif’,height:3},//down image 
{img:scroll_bar.gif’,height:25}//bar image 
);});   
</script>


<div id="scrollContent" style="width:140px;overflow:hidden;height:170px;"> 
内容 
</div>



jquery.linscroll.js源码:
jQuery.fn.setScroll = function(_scroll,_scroll_up,_scroll_down,_scroll_bar){
    this.each(function(){
        
        var _bar_margin = 3;
        
        //create scroll dom
        var _scroll_control = jQuery('<div class="scroll_zone">').width(_scroll.width).css({'position':'absolute','float':'none',margin:0,padding:0}).css('background','url('+_scroll.img+')');
        var _scroll_control_up = jQuery('<img class="scroll_down">').attr('src',_scroll_up.img).width(_scroll.width).css({'z-index':'1000','position':'absolute', 'top':'0','float':'none',margin:0,padding:0});
        var _scroll_control_down = jQuery('<img class="scroll_down">').attr('src',_scroll_down.img).width(_scroll.width).css({'z-index':'1000','position':'absolute', 'bottom':'0','float':'none',margin:0,padding:0});
        var _scroll_control_bar =  jQuery('<img class="scroll_bar">').attr('src',_scroll_bar.img).width(_scroll.width).css({'z-index':'1500','position':'absolute','float':'none',margin:0,padding:0,height:_scroll_bar.height+'px'}).css('top',_scroll_up.height+_bar_margin+'px');
        
        _scroll_control.append(_scroll_control_up);
        _scroll_control.append(_scroll_control_bar);
        _scroll_control.append(_scroll_control_down);
        
        var _oheight = jQuery(this).css('height').substring(0,jQuery(this).css('height').indexOf('px'));
        var _owidth = jQuery(this).width();
        var _ocontent = jQuery(this).html();
        
        if(jQuery(this).attr('scrollHeight')<=_oheight) return;
        
        var _content_zone = jQuery('<div>').html(_ocontent).css({ width:_owidth-10+'px',height:_oheight+'px',overflow:'hidden','float':'none',margin:0,padding:0});
        
        jQuery(this).css({'overflow':'hidden'});
        jQuery(this).empty().append(_content_zone).css({position:'relative'}).append(_scroll_control.css({left:_owidth-_scroll.width+'px',top:'0',height:_oheight+'px',margin:0,padding:0}));

        //register drag event
        jQuery(this).find('.scroll_bar')
        .mousedown(
            function(){
                jQuery(document).mousemove(
                    function(e){
                      var _content = _content_zone.get(0);
                      var lastProgress = _scroll_control_bar.attr('progress');
                      _scroll_control_bar.attr('progress',e.pageY);
                      var nowProgress = _scroll_control_bar.css('top');
                      nowProgress = nowProgress.substring(0,nowProgress.indexOf('px'));
                      nowProgress = Number(nowProgress) + Number(e.pageY-lastProgress);
                      var preProgress = nowProgress/(_oheight-_scroll_up.height-_scroll_down.height-_scroll_bar.height-(2*_bar_margin));
                      _content.scrollTop = ((_content.scrollHeight - _content.offsetHeight) * preProgress);
                      if(nowProgress<(_scroll_up.height+_bar_margin) || nowProgress > (_oheight-(_scroll_down.height+_scroll_bar.height+_bar_margin))) return false;
                      try{_scroll_control_bar.css('top',nowProgress+'px');}catch(e){}
                      return false;
                    }
                );
                return false;
            }
        )
        .mouseout(
            function(){
                jQuery(document).mouseup(
                    function(){
                        jQuery(document).unbind('mousemove');
                     }
                )
            }
        )
        
    }); 
}

分享到:
评论
2 楼 gundumw100 2010-09-13  
http://www.aa25.cn/content.asp?id=794
1 楼 lotnhiro 2010-09-12  
e .....

能发个效果图吗??

谢谢

相关推荐

    jquery 获取浏览器滚动条宽度数值

    jquery 获取当前浏览器滚动条宽度数值

    自定义美化滚动条插件

    JQ浏览器滚动条插件 浏览器滚动条美化JQ浏览器滚动条插件 浏览器滚动条美化

    jQuery实现浮动层随浏览器滚动条滚动的方法

    主要介绍了jQuery实现浮动层随浏览器滚动条滚动的方法,涉及jQuery操作页面元素滚动的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    使用jQuery判断浏览器滚动条位置的方法

    1、我一开始用swipeup和swipedown来做,发现因为有滚动条,不会触发。因此只能判断滚动条是上滚下滚等。关于手机手势,后面的文章会介绍,欢迎关注! 2、通过上滚下滚来让底部导航显示或者因此,安卓上面的浏览器都...

    jquery 实现滚动条下拉时无限加载的简单实例

    通过捕捉浏览器滚动条下拉事件,触发异步加载数据的js方法,实现数据的动态添加。 脚本: var lastId=0;//记录每一次加载时的最后一条记录id,跟您的排序方式有关。 var isloading = false; $(window).bind(...

    jQuery 弹出层 浮动遮罩层 提示框 并随页面滚动而滚动

    实现弹出层不再难,只要引用jQuery.UI.Impromptu.js这个js文件后,想要弹出哪个tag都行了 如:我想要这里是弹出浮动遮罩层&lt;/div&gt; 并随页面滚动而滚动 只要调用 $('#ok').showModel();这个方法就可以了 调用$('#ok')...

    jq完成的向上连续滚动代码

    自己项目上使用的向上滚动代码。如果你需要测试,首先你得下载jq资源包。最好是1.7版本及以上。代码中包含两种滚动模式,使用者自己看下代码就知道怎么回事了。代码经过ie ff 谷歌 360等浏览器的测试。本文档建议懂...

    基于jquery固定于顶部的导航响应浏览器滚动条事件

    今天给大家分享一款基于jquery固定于顶部的导航,这款导航当浏览器滚动条位于顶部时,导航高度较高,当浏览器滚动向下滚动时,导航高度自动减低,并位于顶部。效果图如下: 源码下载 实现的代码: html代码: ...

    asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)

    自从腾讯微博上线以来,基本上就开始用了,一直到现在,作为一个开发人员,也看到了腾讯微博一直在不停的改变,也不知道大家有没有发现,腾讯微博提供两种加载数据的方式,一种是分页,一种是滚动浏览器滚动条加载...

    jQuery实现判断滚动条滚动到document底部的方法分析

    本文实例讲述了jQuery实现判断滚动条滚动到document底部的方法。分享给大家供大家参考,具体如下: 滚动条没有实际的高度。只是为了呈现效果才在外型上面有长度。 在js当中也没有提供滚动条的高度API。 参考了网上...

    jquery浏览器滚动加载技术实现方案

    至于浏览数据,尤其是浏览最新的数据,利用浏览器滚动条来加载,是很好的尝试…… 我试着用jquery来实现这个功能。先要得到滚动条的总长属性值:scrollHeight,还有滚动条当前位置属性值:scrollTop。然后通过计算,...

    jQuery表头固定和自定义滚动条的表格美化

    这次我们要来分享一些关于网页表格数据展示优化的jQuery插件,首先表格的表头是固定的,当数据行比较多时,向下...其次表格的滚动条时经过美化过的,重写了浏览器自带的滚动条样式,这样让整个数据表格显得更加美观。

    js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码

    获取浏览器窗口的可视区域高度和宽度,滚动条高度有需要的朋友可参考一下。IE中,浏览器显示窗口大小只能以下获取: 代码如下复制代码 代码如下:document.body.offsetWidth document.body.offsetHeight在声明了...

    jq三级菜单

    这种效果经常看到一些分享网站,其实这种效果也是很方面用户不需要返回导航可以点击自己想要去的栏目,其实原理很简单,先给浏览器绑定滚动条滚动事件,获取当前浏览器滚动页面的高度,然后在获取导航条div距离头部...

    jQuery判断网页是否已经滚动到浏览器底部的实现方法

    有些需求中,需要当用户滚动到浏览器底部的时候,再加载新的内容。笔者在这里介绍如何使用Jquery判断用户是否已经浏览到网页的底部了。 在了解下面的知识点之前,... //获取垂直滚动条到顶部的垂直距离 $(document).scr

    jquery+css3图片查看器(水平滚动导航条)

    水平滚动图片特效,支持横向滚动条左右拖动。...大家都知道,一般对于网页来说,水平滚动条是非常可怕的,网页大忌,但是如果你能将滚动条做合理的改编,那么用户肯定会乐意接受的,今天给大家推荐的这个就不错

    jquery弹窗时禁止body滚动条滚动的例子

    禁止浏览器滚动条滚动: $('body').css({  "overflow-x":"hidden",  "overflow-y":"hidden" }); 关闭弹出的窗口的时候需要显示出来,让浏览器窗口可以继续滚动 还原滚动: $('body').css({  "overflow-x":"auto...

    jquery easyui滚动条部分设置介绍

    在使用dialog插件时,默认是屏幕居中的,但是当页面出现滚动条时,dialog并没有随着滚动条往下滚动,这时就需要用户滑动滚动条来定位dialog,这不人性化,在说出解决方案前先来普及一下jquery关于定位的几个方法 ...

    jquery 判断滚动条到达了底部和顶端的方法

    代码如下:$(document).height() //是获取整个页面的高度$(window).height() //是获取当前也就是浏览器所能看到的页面的那部分的高度。这个大小在你缩放浏览器窗口大小时会改变,与document是不一样的要获取顶端,...

    jquery实现marquee效果(文字或者图片的水平垂直滚动)

    然后通过整个大容器滚动条的左右或者上下的移动来实现滚动。下面附上一张手绘的图,来简要阐述下原理。首先,我们的目的是实现框1中的内容水平向左滚动(向右滚动,上下滚动的原理其实大致是一样的,只要知道其中一...

Global site tag (gtag.js) - Google Analytics